正则表达式

一、什么是正则

     正则 :也叫做规则,让计算机能够读懂人类的规则,一般都是用来操作字符串的


二、正则的写法

    var re = //;            // 简写   简写比全称性能好

    var re = new RegExp();  // 全称   注意:当正则需要传参的时候,一定要用全称的写法


三、正则中的默认

    1、正则中的默认 : 区分大小写

         如果不区分大小写的话 : 在正则的最后加标识i

            var re = //i;

            var re = new RegExp('','i');

    2、正则中的默认 : 正则匹配成功就会结束,不会继续匹配

       如果想全部查找 : 就要加标识 g(全局匹配)

            var re = //g;

四、正则中的量词

    1、量词的概念 : 匹配不确定的位置,一般用{}来代表

    2、{n,m};             // 最少出现n次,最多出现m次

    3、{n,};              // 最少出现n次

    4、{n};               // 正好出现n次

    5、+ 相当于 {1,}      // 最少出现1次

    6、?相当于 {0,1}    // 出现0次,或者1次

    7、* 相当于 {0,}      // 至少出现0次

    8、^                    // 如果 ^ 放在正则的最开始位置,就代表起始的意思

    9、$                  // 如果 $ 放在正则的最后位置,就代表起始的意思

三、正则的常用方法

    1、test : 正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假(一般用以做判断的)。—> 返回Boolean类型
        test的写法 : 正则.test(字符串);

    2、search : 正则去匹配字符串,如果匹配成功就返回匹配成功的位置,如果匹配失败就返回-1    —> 返回Number类型
        search的写法 : 字符串.search(正则);

    3、match : 正则去匹配字符串,如果匹配成功就返回匹配成功的数字,如果匹配失败就返回null   —> 返回Object类型(Array)
        match的写法 : 字符串.match(正则);

    4、replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串   —> 返回String类型
        replace的写法 : 字符串.replace(正则,新的字符串);
        注意:replace 的第二个参数 : 可以是字符串,也可以是一个回调函数,这个回调函数里面的的第一个参数,就是匹配成功的字符

四、匹配子项

    1、匹配子项是由小括号来代表的。(小括号还有分组操作的意思)

    2、写法 : var re = /(正则第一项)(第二项)(第三项)/;

    3、replace : replace的第二个参数如果是一个回调函数的话,那么这个函数的第一个参数是:当前正则的整体;第二个参数是:正则整体的第一项,第三个参数是正则整体的第二项....以此类推

    4、match : 只有当match不加全局匹配g的时候,才可以获取到子项的集合

五、正则中常用到的转义字符

    .   任意字符 (在正则中的"."代表的是任意字符,而在正则中真正的"."的输写格式是".")

    s  空格

    S  非空格

    d  数字

    D  非数字

    w  字符            ( 字母,数字,下划线_ 都是字符)

    W  非字符         ( 特殊字符,汉字等都是非字符)

      独立的部分   (起始,结束,空格)

    B  非独立的部分

    1  重复的第一个子项

    2  重复的第二个子项

    ……


六、正则表达式字符类

    1、字符类 : 一组相似的元素,用[]来表示,中括号的整体代表一个字符
        写法 : var re = /a[bcd]e/;

    2、排除 : 如果 ^ 写在[]里面的话,就代表排除的意思;如果 ^ 放在正则的最开始位置,就代表起始的意思
        写法 : var re = /a[^bcd]e/;

    3、范围 : 在[]里面写匹配的范围,如a-z代表的是字母a一直到字母z的26个字母
        写法 : var re = /a[a-z]b/;

原文地址:https://www.cnblogs.com/effieduo/p/5174518.html