美文网首页
正则-exec正则用来捕获的一个方法和match字符串匹配正则的

正则-exec正则用来捕获的一个方法和match字符串匹配正则的

作者: 子心_ | 来源:发表于2019-06-16 09:43 被阅读0次

    在正则捕获中,我们加修饰符"g", 可以取消捕获时候的懒惰性,原理:
    正则中有一个lastIndex属性,它代表下一次正则捕获的开始索引,但是默认这个值永远是0,也就是不管执行几次,exec都用重新从头开始捕获,所以获取的都是同一个结果,而加了修饰符"g", 每次exec执行完成之后,我们的lastIndex属性的值都等于当前捕获的内容的后一个索引,下一次从这之后继续查找捕获,这样就可以一次次地执行,把想要的结果都捕获到了。

    var reg = /\d+?/g;
    var str = "zmnqane2011huiknag2018";
    //console.log(reg.lastIndex);
    //var ary = reg.exec(str);
    //console.log(ary);
    //console.log(reg.lastIndex);
    //console.log(ary);
    var reg = reg.exec(str), ary = [];
    while(res) {
      ary.push(res[0]);
      res = reg.exec(str); 
    }
    console.log(ary)//--["2","0","1","1","2","0", "1", "8"]
    

    match字符串用来匹配正则的一个方法:

    var reg = /\d+?/g;
    var str = "zmnqane2011huiknag2018";
    var ary = str.match(reg);
    console.log(ary); //["2", "0", "1", "1", "2", "0", "1", "8"]
    
    // match一次性把符合大正则都存放在一个数组中,如果也需要捕获小分组中的内容,match是捕获不到的
    String.prototype.match = function (reg) {
    // this --> str我们想操作的那个字符串-->原型上的方法,里面的this都是我们要操作的当前的实例
      var ary = [];
      var res = reg.exec(this);
      while (res) {
        ary.push(res[0]);
        res = reg.exec(this);
      }
      return ary; 
    }
    str.match(reg)
    

    相关文章

      网友评论

          本文标题:正则-exec正则用来捕获的一个方法和match字符串匹配正则的

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