正则表达式


    1、正则表达式(正规表达式或常规表示法):

        使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.
    通常使用正则表达式来检索或替换那些符合某个模式的文本.

    2、命令:
        括号(Bracket):

            1、方括号[]:需要匹配的字符;
            2、花括号{}:需要匹配的数量;
            3、圆括号():用来进行规则的分组;

        常用命令:

        *: 0次或多次;
        +: 1次或多次;
        ?: 0次或1次;

        \d: 数字字符:[0-9];
        \D: [^0-9];
        
        \s: 空格;
        \S: 非空格;
        
        \w: [a-z0-9_];
        \W: [^a-z0-9_];

    3、匹配规则:

        1、字面量字符和元字符:

            如果在正则表达式之中,某个字符只表示它字面的含义,那么它们就叫做“字面量字符”。

            /dog/.test("old dog") // true;

            正则表达式的dog,就是字面量字符,所以/dog/匹配“old dog”,
            因为它就表示“d”、“o”、“g”三个字母连在一起。
    

----------

        2、位置字符:

         置字符用来提示字符所处的位置,主要有两个字符。

            ^ 表示字符串的开始位置 ;
            $ 表示字符串的结束位置 。

----------

        3、竖线符号(|):
        
            在正则表达式中表示“或关系”(OR),即cat|dog表示匹配cat或dog。
            
            多个选择符可以联合使用:

            选择符会包括它前后的多个字符,
            比如/ab|cd/指的是匹配“ab”或者“cd”,
            而不是指匹配“b”或者“c”。
            如果想修改这个行为,可以使用圆括号。
            a( |\t)b/.test('a\tb') // true
        

----------

        4、重复类:

            模式的精确匹配次数,使用大括号({})表示。

            {n}      表示恰好重复n次,
            {n,}      表示至少重复n次,
            {n,m}       表示重复不少于n次,不多于m次。

            
            /lo{2}k/.test(‘look") // true

            /lo{2, 5}k/.test("looook") // true

----------

        5、量词符:

            
            *: 某个模式出现  0次或多次;
            +: 某个模式出现  1次或多次;
            ?: 某个模式出现  0次或1次;

----------

        6、贪婪模式:

            量词符在默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。
    
            var s = 'aaa';
            
            s.match(/a+/) // ["aaa"]

          非贪婪模式:在量词符后面加一个问号。

            var s = 'aaa';

            s.match(/a+?/) // ["a"]

----------

        7、字符类:

            字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。
            所有可供选择的字符都放在方括号内,比如[xyz] 表示x、y、z之中任选一个匹配。

            有两个字符在字符类中有特殊含义:

            (1)脱字符(^):

            如果方括号内的第一个字符是[^],则表示除了字符类之中的字符,其他字符都可以匹配。比如,[^xyz]表示除了x、y、z之外都可以匹配。    

            (2)连字符(-)

            某些情况下,对于连续序列的字符,连字符(-)用来提供简写形式,表示字符的连续范围。比如,[abc]可以写成[a-c],[0123456789]可以写成[0-9]。
            
            当连字号(dash)不出现在方括号之中,就不具备简写的作用,只代表字面的含义.

----------

        8、转义符:

            正则表达式中那些有特殊含义的字符,如果要匹配它们本身,就需要在它们前面要加上反斜杠。比如要匹配加号,就要写成\+。

----------

        9、修饰符:

            表示模式的附加规则,放在正则模式的最尾部。

            修饰符可以单个使用,也可以多个一起使用:
        
                // 单个修饰符 var regex = /test/i;
        
                // 多个修饰符 var regex = /test/ig;

             (1)g修饰符:

                默认情况下,第一次匹配成功后,正则对象就停止向下匹配了。g修饰符表示全局匹配,加上它以后,正则对象将匹配全部符合条件的结果,主要用于搜索和替换。

            (2)i修饰符:

                默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写。

        10、预定义模式:

            \d 匹配0-9之间的任一数字,相当于[0-9]。
            \D 匹配所有0-9以外的字符,相当于[^0-9]。

            \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9]。
            \W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9]。 

            \s 匹配空格(包括制表符、空格符、断行符等),相等于                [\t\r\n\v\f]。 
            \S 匹配非空格的字符,相当于[^\t\r\n\v\f]。

            \b 匹配词的边界。
            \B 匹配非词边界,即在词的内部。

        11、正则的属性和方法:

            属性:

                1、 lastIndex:返回下一次开始搜索的位置。该属性可读写,但是只在设置了g修饰符时有意义。

                2、 source:返回正则表达式的字符串形式(不包括反斜杠),该属性只读。

            方法:

                1、test(): 正则对象的test方法返回一个布尔值,
                          表示当前模式是否能匹配参数字符串。

                    如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配。

                2、exec(): 正则对象的exec方法,可以返回匹配结果。

                    如果发现匹配,就返回一个数组,每个匹配成功的子字符串,就是数组成员,否则返回null。

                    属性: input:整个原字符串。

                    index:整个模式匹配成功的开始位置(从0开始)。

        12、字符串对象的方法:

            1、match():返回一个数组,成员是所有匹配的子字符串。

            2、字符串的match方法与正则对象的exec方法非常类似:匹配成功返回一个数组,匹配失败返回null。

            如果正则表达式带有g修饰符,则该方法与正则对象的exec方法行为不同,会一次性返回所有匹配成功的结果。

posted @ 2016-05-03 01:19  白教主  阅读(180)  评论(0编辑  收藏  举报