lastIndex 是可读可写的整数属性,表示下一次匹配的起始字符位置,带有g、y模式(flag标志)的正则对象,lastIndex会被自有test/exec方法和字符串的match方法修改。
RegExp.prototype.exec/test (test方法底层调用exec)方法每次执行会更新lastIndex,默认是0,匹配到一项后,更新为匹配文字之后的第一个字符位置,继续执行exec/test后如果没找到匹配项,更新为0。
String.prototype.match方法虽然不依赖lastIndex,但是每次执行会重置lastIndex为0。
String.prototype.matchAll 返回迭代器,每个元素和exec返回的数组对象属性相同。数组元素0是匹配项子字符串,数组其他元素是各个捕获分组,index属性是匹配项起始位置,input属性是原字符串,groups属性是命名捕获分组组成的对象。