gpt4 book ai didi

Javascript:当字符串连接时,新的正则表达式会破坏 for 循环迭代器

转载 作者:行者123 更新时间:2023-12-03 04:12:10 25 4
gpt4 key购买 nike

我有一个名为脚本的对象。它包含一个名为 name 的变量,其中包含一个字符串。

还有一个包含多个脚本对象的数组,该数组称为脚本。它的大小是 5。

我有一个 for 循环,我想为与“(”连接的脚本对象的每个名称创建一个新的正则表达式:

var scriptName;
for(var i=0; i<scripts.length; i++){
console.log("i = "+i);
scriptName = scripts[i].name+"(";
var newRegex = new RegExp(scriptName, 'g');
}

问题是,每当我将 script[i].name 与“(”连接时,for 循环就会停止工作。它不会增加 i,而是会在 i=0 处停止。这很奇怪,因为 for 循环仍然停止而不是无限循环.

如果我更换

scriptName = scripts[i].name+"(";

scriptName = scripts[i].name;

我得到了正确的输出:0, 1, 2, 3, 4

否则我会得到输出 0 x 5 次

最佳答案

在构建 RegExp 之前,您需要转义字符串 - 如下所示:

var scriptName;
for(var i=0; i<scripts.length; i++){
console.log("i = "+i);
scriptName = scripts[i].name+"(";
// Escape for regex
var escapedName = scriptName.replace(
/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"
);
var newRegex = new RegExp(escapedName, 'g');
}

有趣的 /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g 部分匹配正则表达式特殊字符,例如 ^ + ( ),然后替换在它们之前添加斜杠,以便它们解析字符串时将被忽略。

关于Javascript:当字符串连接时,新的正则表达式会破坏 for 循环迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283757/

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