JavaScript正则表达式

由于本人大部分处理后台代码,很少用到Javascript。最近的项目做前端,用到Js和正则,特发此文,总结一下。

参考W3cSchool和其他的网上信息。

如有问题,欢迎指正.

使用JS和正则的较多的情况:表单验证、正则替换字符串等等……

正则的初始化

var reg=new RegExp(pattern, attributes);

//第一个参数pattern:就是传入正则表达式的
//第二个参数 attributes:包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。最常用的为"g"

RegExp对象包括三个方法

1、text():方法检索字符串中的指定值。返回值为bool类型,即true 或 false

    <script type="text/javascript">
        var pattern = "_n$";//正则表达式
        var reg = new RegExp(pattern, "g");
        alert(reg.test("abc_n"));
    </script>

2、exec():方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

    <script type="text/javascript">
        var pattern = "abc_n$";//正则表达式
        var reg = new RegExp(pattern, "g");
        alert(reg.exec("abc"));
        //弹出框为null


        var reg1 = new RegExp(pattern, "g");
        alert(reg1.exec("abc_n"));

        //弹出框为abc_n
    </script>

3、compile():暂时没有用到,以后用到的话再继续补充

支持正则表达式的 String 对象的方法

有四个方法

1、search():检索与正则表达式相匹配的值。

2、math():找到一个或多个正则表达式的匹配。

3、replace():替换与正则表达式匹配的子串。

4、split():把字符串分割为字符串数组。

项目中用到了replace,今天就着重讲一下replace

    <script type="text/javascript">

        //将字符串最后的_n替换掉
        var pattern = "_n$"; //正则表达式
        var inputstr = "enabled"; //要替换的字符串

        var reg = new RegExp(pattern, "g");

        alert(inputstr.replace(reg, ""));//第一个参数为正则表达式,第二个参数为要替换的新字符


    </script>

以下是一些常用的正则表达式,可能有个别的存在bug,是自己累积和写的:

Decimal:^\d{0,16}\.?\d{0,2}$

手机号:^1[3,5,8]\d{9}$

文件:\w+(\.txt|\.doc|\.docx|\.xls|\.xlsx)

 图片:^\w+(\.gif|\.jpg|\.png|\.jpeg)$

数字和字母:^([0-9]|[0-9a-zA-Z]|[a-zA-Z]){6,16}$

去除非法字符(反义):^[^/\\<>*?@]{6,}$

/// <summary>
/// 常用正则
/// </summary>
public abstract class Patterns
{
/// <summary>
/// 单个字母
/// </summary>
public const string SINGLE_LETTER = @"^\w$";

/// <summary>
/// 正确文件名是否有非法字符
/// </summary>
public const string FILENAME = @"[/\\<>*?]";

/// <summary>
/// 图片格式扩展名
/// </summary>
public const string IMAGE_EXTS = @"\.gif|\.jpg|\.jpeg|\.png|\.bmp";

/// <summary>
/// 单个电子邮箱地址
/// </summary>
public const string EMAIL = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";

/// <summary>
/// 密码,非空格,tab符以外的任意字符
/// </summary>
public const string Password = "^[^\\s]{6,16}$";

/// <summary>
/// 一批 E-Mail 地址(单角分号分隔)
/// </summary>
public const string BATCH_EMAIL = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(;\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$";

/// <summary>
/// ID串,形如1(,2,3,4)*
/// </summary>
public const string IDS = @"^\d+(,\d+)*$";
/// <summary>
/// 字母+数字的组合
/// </summary>
public const string WORD_NUMERAL_COMBO = @"(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{2,})$";
/// <summary>
/// 纯数字
/// </summary>
public const string NUMERAL = @"^\d+$";
}

这篇文章比较全面:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html

原文地址:https://www.cnblogs.com/youmeng/p/3120145.html