5.正则捕获的懒惰性及解决方案

2019-10-17  本文已影响0人  追马的时间种草

上一篇:常用正则表达式


正则捕获的懒惰性及解决方案

  1. 执行一次exec只能捕获到一个和正则匹配的内容,其余内容还没有捕获到(执行多次,也没有卵用,依然只会捕获相同的内容)

    //正则EXEC捕获
    console.log(reg.exec(str))//["2019", index: 5, input: "shang2019xiaolin2020", groups: undefined]
    //正则EXEC捕获
    console.log(reg.exec(str))//["2019", index: 5, input: "shang2019xiaolin2020", groups: undefined]
    
  1. 正则的捕获天生具备懒惰性:只能捕获第一个匹配的内容,剩余的默认捕获不到(解释了上述3)

    • 懒惰性的原因:

      1. lastIndex的值没有变:正则在捕获的时候,lastIndex为下一次在字符串中开始查找的索引

        //=>LAST-INDEX的值不变,导值懒惰性
        console.log(reg.lastIndex)//=>0
        console.log(reg.exec(str))//["2019", index: 5, input: "shang2019xiaolin2020", groups: undefined]
        console.log(reg.lastIndex)//=>0
        console.log(reg.exec(str))//["2019", index: 5, input: "shang2019xiaolin2020", groups: undefined]
        
      2. 即使我们手动修改lastIndex,然而也没有卵用

        reg.lastIndex=9
        console.log(reg.lastIndex)//=>9
        console.log(reg.exec(str))//["2019", index: 5, input: "shang2019xiaolin2020", groups: undefined]
        

下一篇:正则捕获的贪婪性及解决方案

上一篇下一篇

猜你喜欢

热点阅读