javascript - 正则表达式 exec() 循环永远不会在 JS 中终止

标签 javascript regex infinite-loop

var matches;

while(matches = /./g.exec("abc"))
{
    console.log("hey");
}

这永远不会终止。我希望它在 3 个循环后终止。

警告:不要在 Chrome 中运行它,因为无限的日志行会卡住您的整个系统。在 IE 中运行它是安全的(它仍然会卡住您的网页,但您可以转到地址栏并按回车键重新加载)。

最佳答案

这是在循环中执行 exec 的方式:

var matches;        
var re = /./g;

while(matches = re.exec("abc")) {
  if (matches.index === re.lastIndex)
     re.lastIndex++;
  console.log("hey");
}
  • 将正则表达式保存在单独的变量中,而不是使用正则表达式文字。

  • 此外,如果正则表达式的 lastIndex(匹配位置)与结果数组的 index 属性相同,则将 lastIndex 递增 1。

关于javascript - 正则表达式 exec() 循环永远不会在 JS 中终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015942/

相关文章:

javascript - 如何使 slider 上方的文本框

javascript - 使用 jQuery 在表单中查找所有输入元素的最佳方法

javascript - Textinput 或 Textarea 值更改时触发事件 MeteorJS

regex - 了解否定字符类

regex - perl6正则表达式匹配连词&&

javascript - 运行用户输入的 Javascript 时,有没有办法检测并停止 "problem"脚本?

javascript - 将杏仁与 grunt-contrib-requirejs 一起使用

javascript - 用于匹配 url 中特殊字符的正则表达式模式

带 sleep 的 Java 循环

ios - 当用户更改 slider 位置时设置 slider.value 不好吗?