【发布时间】:2016-08-24 19:00:12
【问题描述】:
我无法解释来自 MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec 的以下代码
var myRe = /ab*/g;
var str = 'abbcdefabh';
var myArray;
while ((myArray = myRe.exec(str)) !== null) { //confused by this line
var msg = 'Found ' + myArray[0] + '. ';
msg += 'Next match starts at ' + myRe.lastIndex;
console.log(msg);
}
我对 while 循环行感到困惑。似乎将 myArray 设置为在字符串 str 上调用 exec 的结果,并说如果它不等于 null 则继续。
我不明白程序如何知道从找到匹配项的最后一个索引开始搜索。在我看来,这应该是一个无限循环 b/c 我看不到它说从数组中的下一个索引开始搜索的位置。
另外,是否有任何理由使用 exec 来查找多个匹配项而不仅仅是使用匹配项? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
【问题讨论】:
标签: javascript regex exec