前言
最近在写自己的小项目,用到正则的exec,利用正则的lastIndex属性,遇到一个坑:
|
|
上面其实是自己没有能够理解re.exec中lastIndex的含义,误以为,只是代表匹配一次的结束位置,只要每次执行exec就直接更新lastIndex,其实不是的。
解释
lastIndex其实是指下一个匹配的索引值,不是简单代表匹配一次的结束位置,其实也表示下一次开始的位置;
于是上面例子中的第二个匹配是从()的1索引值及)开始匹配,匹配为空;lastIndex在一个字符中多次执行exec是有用的;如:
要想达到一开始例子中的效果,可以每次都将lastIndex = 0,即re.lastIndex=0,这样子就使得匹配从字符的首字母开始匹配;
|
|