第20课——正则表达式

正则表达式

一、概念
    正则表达式是处理字符串,查找符合规则的字符串的式子,也叫规则表达式
二、创建方式
    1.符号创建
        var reg = /a/ ; 
    2.内置构造函数创建
        var reg = new RegExp("a");
三、修饰符
    i	执行对大小写不敏感的匹配。
    例:    var reg = /a/i ;    //可以匹配大写A或者小写a
    g       全局匹配,直到查完为止
    m	当字符串多行,执行多行匹配
四、元字符
    1.转义字符\
        当我们要匹配一些特殊含义的字符,需要用\进行转义
        例: 当我们要匹配\时,我们需要   var reg = /\\/ ;用反斜杠将\进行转义
    2.匹配非换行的任意字符 小数点符号 “.”
        --注:当我们要匹配小数点时需要用转义字符进行转义
        例:    var reg = /\./ ; 
    3.匹配空格  \s  反斜杠加小写的s
    4.匹配非空格    \S  反斜杠加大写S
    5.匹配数字      \d     反斜杠加小写d
    6.匹配非数字    \D      反斜杠加大写D
    7.匹配数字,字母,下划线。  \w      反斜杠加小写w
    8.匹配非 数字,字母下划线   \W      反斜杠加大写W
五、正则表达式方法
    1.test 直译测试     返回值是是Boolean类型
        语法: 正则表达式.test(要测试字符串);
        如果满足这个正则表达式,返回值为true,不满足则为false
        例:    var reg = /a/ ;     //匹配一个字符串中是否含a
                var str = 'jhfgjga13' ;
                console.log(reg.test(str));  //测试字符串是否含a,含有则返回true
    2.exec 直译执行     返回值是一个对象数组
        语法:  正则表达式.exec(要执行的字符串);
        例:    var reg = /\d+/g ; 
                var str = 'das132ad124ad1324' ; 
                console.log(reg.exec(str));
        返回值为
                    0: "132"
                    groups: undefined
                    index: 3
                    input: "das132ad124ad1324"
                    length: 1
                    [[Prototype]]: Array(0)
        这里需要注意,当进行全局匹配的时候,下次执行会在这次索引值index之后开始匹配
        第二次执行: 
                console.log(reg.exec(str));   
        返回值为
                    0: "124"
                    groups: undefined
                    index: 8
                    input: "das132ad124ad1324"
                    length: 1
                    [[Prototype]]: Array(0)
        第三次执行:
                console.log(reg.exec(str));  
        返回值为
                    0: "1324"
                    groups: undefined
                    index: 13
                    input: "das132ad124ad1324"
                    length: 1
                    [[Prototype]]: Array(0)
        如果上述执行的不是全局匹配,即 reg = /\d+/ ; 
        不管我们执行多少次,它的返回值都是
                    0: "132"
                    groups: undefined
                    index: 3
                    input: "das132ad124ad1324"
                    length: 1
                    [[Prototype]]: Array(0)
六、限定符
1.出现的次数       {次数}
例:     var reg = /b{2}/ ; //这个正则表达式表示存在2个连续的b出现一次或多次
        var str = 'adbbbasjh' ;
        console.log(reg.test(str));     //返回值为true

2.指定次数          {最少出现多少次,最多出现多少次}
例:     var reg = /ab{2,4}c/ ;  //在ac中间的b可以有2到4个
        var str = 'fdabbbcaf' ;
        console.log(reg.test(str));     //返回值为true
3.指定次数到无限次      {最少出现多少次,}
例:    var reg = /ab{2,}c/ ;           //在ac中间至少需要有2个b能匹配到
        var str = 'abbbbbbbbbc' ;
        console.log(reg.test(str));     //返回值为true
4.字符出现0次到无限次   “ * ”       也可以表示为{0,}
例:    var reg = /a*/ ;        //不管a有没有都能匹配到
        var str = 'fjhg' ;   
        console.log(reg.test(str)) ;    //true
5.字符出现一次或以上    “ + ”       也可以表示为{1,}
例:     var reg = /a+/ ;            //匹配的串中至少有一个a
        var str = 'fjagkgjhf' ; 
        console.log(reg.test(str));             //true
6.字符出现1次或者不出现     “ ? ”           也可以表示为{0,1}
例:    var reg = /a?/ ;        //表示字符不出现或者出现1次
        var str = 'ggaj00' ;
        console.log(reg.test(str));     //true
七、特殊符号
1.开始符
    ^       以什么开始
例:    var reg = /^a/ ;        //  能匹配以a开始的字符串
        var str = 'jhdgfja' ;   
        console.log(reg.test(str))      //  false   

2.结束符
    $       以什么结束          
例:    var reg = /^a\d+a$/ ;   //能匹配以a开始,a结束,中间是纯数字的字符串
        var str = 'a132431000a' ;
        console.log(reg.test(str));     //true
3.边界          边界符:非 数字,字母,下划线的字符豆角边界符
    \b      边界符中 
例1:   var reg = /\bis\b/ ;            //边界符中含is
        var str = 'this is a knife' ;
        console.log(reg.test(str));     //true     
例2:    var reg = /\bis\b/ ;            //边界符中含is
        var str = 'this a knife' ;      //边界符左边有,右边没有
        console.log(reg.test(str));     //false
八、与正则相关的字符串方法
    1.split         字符串切割
    例:     var reg = /\d+/ ; 
            var str = 'ad23adaf354asff33ad1' ;
            var arr = str.split(reg);
            console.log(arr); 
    打印结果为:
            0: "ad"
            1: "adaf"
            2: "asff"
            3: "ad"
            4: ""
            length: 5
            [[Prototype]]: Array(0)
            字符串根据满足正则的条件进行切割,这里条件是根据字符串里的数字切割

    2.search        查找字符串中满足正则条件的字符,并返回字符串中第一次满足正则的索引;如果
    字符串没有满足正则的字符,则返回-1.和我们数组的indexOf类似。
    例:     var reg = /\d+/ ;
            var str = 'ad122asdad132' ;
            console.log(str.search(reg));   //返回值为2

    3.match         字符串匹配方法,查找字符串中满足规则的字符,并放在数组里
    例1:     var reg = /\d+/ ; 
            var str = 'adaf232adad132ad12' ;
            console.log(str.match(reg));    //[232]
            这里没有全局匹配,正则会以一种惰性匹配的方式进行查找,只查找到第一次满足条件就不会
            再查找下去
    例2:   var reg = /\d+/g ; 
            var str = 'adaf232adad132ad12' ;
            console.log(str.match(reg));   
    返回值:        满足条件的字符组成的数组
            0: "232"
            1: "132"
            2: "12"
            length: 3
            [[Prototype]]: Array(0)
    4.replace       字符串的替换,将字符串中满足正则的字符替换成我们想要的字符
    例:     var reg = /sm/ig ;      //对sm两个字母进行全局不分大小写的匹配
            var str = 'asd12adsm54adasmjhagjsjklmsm' ;
            console.log(str.replace(reg,"**"));     //将字符串中所有的sm替换成**
            如果上述没有进行全局匹配,那么只会改变第一次满足条件的并进行替换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值