初学JavaScript正则表达式

一.建立正则表达的体式格局
    1.字面量或称为直接量(不须要用任何的关键字申明它是正则表达式,而是用斜杠来示意正则表达式的最先和完毕)
        eg:    var reg = /^\w/;
    
    2.对象
        eg: var reg = new RegExp("^\w");
    
    attentions:
        1)由于简约轻易,字面量建立的体式格局用的占多数。
        2)ES5划定正则表达式直接量的每次运算都返回新对象。
二、    正则对象的属性和要领
    1.属性(5个)
        ignoreCase:返回一个布尔值,示意是不是设置了i润饰符,该属性只读。
        global:返回一个布尔值,示意是不是设置了g润饰符,该属性只读。
        multiline:返回一个布尔值,示意是不是设置了m润饰符,该属性只读。
        lastIndex:返回下一次最先搜刮的位置。该属性可读写,然则只在设置了g润饰符时有意义。
        source:返回正则表达式的字符串情势(不包含斜杠),该属性只读。
    eg:    
            var reg = /Hello/ig;
            console.log(reg.ignoreCase);    //true  
            console.log(reg.global);        //true
            console.log(reg.multiline);        //false    
            console.log(reg.lastIndex);        //0
            console.log(reg.source);        //Hello
    2.要领(3个)
        test():    检索字符串中的指定值。返回值是 true 或 false。
        exec():    假如发明婚配,就返回一个数组,成员是每个婚配胜利的子字符串,不然返回null。
        compile():    用于转变 RegExp
    eg:
    1)    var reg1 = /Hello/ig;                    
        console.log(reg1.test("Hello World!"));//true
        console.log(reg1.lastIndex);            //5
        console.log(reg1.test("HELLO World!"));    //false
        //attention:    当正则表达式有g润饰时,每一次运算都邑自动更新lastIndex,下次运算就重新的出发点(lastIndex的值)最先追求婚配,而不是把字符串按从左到右去检索。
        reg1.lastIndex = 0;
        console.log(reg1.test("HELLO World!"));    //true
        
    
    2)    var reg1 = /Hello/ig;
        var result = reg1.exec("Hello abc hello def");    
        console.log(result);        //["Hello"]
        console.log(result.input);    //Hello abc hello def
        console.log(result.index);     //0
        onsole.log(reg1.exec("Hello abc hello def"));    //["hello"]
        console.log("Hello abc hello def".match(reg1));    // ["Hello", "hello"]
    attention:    
                exec要领的返回数组还包含以下两个属性:
                    input:全部原字符串。
                    index:全部形式婚配胜利的最先位置(从0最先计数)。
        
    3)    var patt1=new RegExp("e");
        console.log(patt1.test("The best things in life are free")); //true
        patt1.compile("d");
        console.log(patt1.test("The best things in life are free"));    //false        
三、语法
    1.润饰符及其形貌        
        i    实行对大小写不敏感的婚配。
        g    实行全局婚配(查找一切婚配而非在找到第一个婚配后住手)。
        m    实行多行婚配。
    2.元字符(Metacharacter)是具有特别寄义的字符:
        .    查找单个字符,婚配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)之外的一切字符。
        \cX 示意Ctrl-[X],个中的X是A-Z当中任一个英文字母,用来婚配控制字符。
        [\b] 婚配退格键(U+0008),不要与\b殽杂。
        \n 婚配换行键。
        \r 婚配回车键。
        \t 婚配制表符tab(U+0009)。
        \v 婚配垂直制表符(U+000B)。
        \f 婚配换页符(U+000C)。
        \0 婚配null字符(U+0000)。
        \xhh 婚配一个以两位十六进制数(\x00-\xFF)示意的字符。
        \uhhhh 婚配一个以四位十六进制数(\u0000-\uFFFF)示意的unicode字符。
        \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 婚配非词边境,即在词的内部。    
    3.位置字符
        ^ 示意字符串的最先位置
        $ 示意字符串的完毕位置
    
    attentions:
        1)当正则表达式用m(即multiline)润饰时,则^能够婚配每一行的行首,$能够婚配每一行的行末
        2)^用于中括号示意取非,简朴地说,就是消除中括号中的一切元素。
    4.挑选字符
        竖线标记()在正则表达式中示意“或关联”(OR)
        方括号([])一切可供挑选的字符都放在方括号内,比方[xyz] 示意x、y、z当中任选一个婚配。
        连字符(-)示意字符的一连局限
        
        eg:
            "a".match("ab");        //["a"]
            "b".match("ab");        //["b"]
            "ab".match("ab");        //["a"]
    5.转义符
        正则形式中,须要用斜杠转义的,一共有12个字符:^、.、[、$、(、)、、*、+、?、{和\\。须要特别注意的是,假如运用RegExp要领天生正则对象,转义须要运用两个斜杠,由于字符串内部会先转义一次。假如是字面量天生,两次转义反而会画蛇添足。
        eg:
            (new RegExp('1\+1')).test('1+1')// false
            (new RegExp('1\\+1')).test('1+1')// true
            /1\\+1/.test('1+1')        //false
            /1\+1/.test('1+1')        //true
    6.反复类
        ?    软性量词    涌现零次或一次
        *    软性量词    涌现零次或屡次(恣意次)
        +    软性量词    涌现一次或屡次(最少一次)
        {n}    硬性量词    对应零次或许n次
        {n,m}    软性量词    最少涌现n次但不凌驾m次
        {n,}    软性量词    最少涌现n次(+的升级版)

参考链接:http://javascript.ruanyifeng….

    原文作者:ZRC_Struggling
    原文地址: https://segmentfault.com/a/1190000007742943
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞