美文网首页
正则表达下-2020-01-04

正则表达下-2020-01-04

作者: 增商 | 来源:发表于2020-01-04 16:07 被阅读0次
    量词:
    • n+ == {1,∞}
    • n* == {0,∞}


      图片.png
    str='abc'
    str.match(/\d*/g)
    //=>[" "," "," "," "]
    
    图片.png
    光标位
    • n? === {0,1}
      //=>["a","a","a",...," "]
    • n{x} //==> x个
    • n{x,y}//=>x-y个


      图片.png
    • n{x,∞}//=>x,
      =>匹配的是x个位放一起输出
    图片.png

    以什么开头和结尾

    var strrt='1asd3';//=>首尾是否还有数字
    var regt=/^(\d)|(\d)$/g
    console.log(strrt.match(regt));
    console.log(regt.test(strrt));
    

    首尾都含有数字

    //=>都有呢?
    var regta=/^\d[\s\S]*\d$/g //=>当然可以是[任何一个区间]
    console.log(regta.test(strrt));
    

    RegExp 对象属性
    图片.png

    正则表达式是个规则对象,可以去验证


    图片.png
    源文本,内容.png
    source.png

    RegExp 对象方法
    图片.png

    重点:exec游标 lastIndex

    clog.png
    图片.png
    图片.png
    图片.png

    表达式篇:() 反向引用,子表达式(\x)\1 反向引用第一个(\x)的值

    图片.png

    多个1的话,取决于写在一起的个数


    图片.png
    图片.png
    var str1='aabb';
    var reg1=/(\w)\1(\w)\2/g; //=>aabb
    console.log(str1.match(reg1));
    console.log(reg1.exec(str1));
    

    方法篇:

    注意match()

    图片.png
    图片.png
    图片.png
    匹配到和没匹配到返回值-1 和 匹配到位置 search
    split()
    图片.png
    replace():没有访问全局
    图片.png
    图片.png
    图片.png
    //=>replace()
    var strrp='aabb';
    var regrp=/(\w)\1(\w)\2/g;
    console.log(strrp.replace(regrp,'$2$2$1$1'));
    
    图片.png
    var strrp='aabb';
    var regrp=/(\w)\1(\w)\2/g;
    console.log(strrp.replace(regrp,function ($,$1,$2){
    return $2+$2+$1+$1;
    }));
    //=>第一个是全局$ 第二个是子表达式 你这里有两个\2 
    

    既然这样我们就可传一个function去匹配一些逻辑上的操作

    //=>第一个是全局$ 第二个是子表达式 你这里有两个\2 
    var thefir='the-first-name';//=>theFirstName
    var regth=/-(\w)/g;
    console.log(thefir.replace(regth,function($,$1){
    return $1.toUpperCase();
    }));
    // (子表达式) 可以用于$引用
    
    图片.png
    注意这里匹配了两次,第一次的时候拿正则去匹配,到了第二次时,又执行function去配匹,换言之,1每次对应的是不同的,执行了两次,产生两个1

    52分08秒正向预查,正向断言,好比是修饰条件,如果你需要找什么东西,如果找abaaaaaaa,找后面跟b的a,修饰条件
    var str='abaaaaaa';
    var reg=/a(?=b)/g;//=>代表b不参与选择,只参与修饰,描述
    clog(str.match(reg)) //=>['a']
    

    非正向预查

    reg=/a(?!b)/g;
    clog(str.match(reg)) //=>['a','a','a','a','a','a']
    
    图片.png

    试题: 求其100000000 //=>每3位断点 100.000.000

    var str='10000000000'; //=>10.000.000.000
    var reg=/(?=(\B)(\d{3})+$)/g;console.log(str.replace(reg,'.'));
    //=>1. 从后往前查,三个位数个数字 (\d{3}) 
    //=>2. 多位 (\d{3})+
    //=>3. ?=正向断言,意思是把中间的空,以空开头 => 带有非单词边界的三位数字个
    //=>3. / () =>/空
    

    相关文章

      网友评论

          本文标题:正则表达下-2020-01-04

          本文链接:https://www.haomeiwen.com/subject/dybxactx.html