首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex ()循环在JS中从不终止

Regex ()循环在JS中从不终止
EN

Stack Overflow用户
提问于 2015-10-08 12:33:45
回答 2查看 1.8K关注 0票数 3
代码语言:javascript
复制
var matches;

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-08 12:37:22

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

代码语言:javascript
复制
var matches;        
var re = /./g;

while(matches = re.exec("abc")) {
  if (matches.index === re.lastIndex)
     re.lastIndex++;
  console.log("hey");
}
  • 将regex保存在单独的变量中,而不是使用regex文字。
  • 同样,如果regex的lastIndex (匹配位置)与结果数组的index属性相同,则将lastIndex增加1。
票数 11
EN

Stack Overflow用户

发布于 2015-10-08 12:35:42

这是因为每次都要创建一个带有g标志的新对象,而不是保留一个regex对象。regex对象跟踪最后一次匹配。因为每次都要创建新对象,所以对象从一开始就开始了。

每个regex文字都是它自己的对象,这就是为什么:

代码语言:javascript
复制
/./g !== /./g
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33015942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档