gpt4 book ai didi

javascript - 为什么这个 RegExp exec 会导致无限循环?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:21 24 4
gpt4 key购买 nike

我有以下代码块:

var field,
reg = new RegExp('{{.*?}}', 'i'),
text = 'This is a string with 1: {{param1}}, 2: {{param2}} and 3: {{param3}} parameters.';

while (field = reg.exec(text)) {
console.log(field);
}

如果我包含一个 g 全局标志,循环运行良好。但是,如果它不是全局的,reg.exec(text); 是否应该在第一次匹配后返回 null 并结束 while 循环?

试图了解其背后的原因,如果有人能详细说明,我将不胜感激。

最佳答案

RegExp.prototype.exec() 的 MDN 文档在解释 RegExp 对象的 lastIndex 属性的值时,有我认为的答案:

The index at which to start the next match. When "g" is absent, this will remain as 0.

因此,每次您对该 RegExp 对象调用 .exec() 时,它都会再次从字符串的开头 开始。如果至少有一个匹配项,则意味着它将始终找到一个匹配项,并且您的循环将永远不会结束。

关于javascript - 为什么这个 RegExp exec 会导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com