我想替换......(' 2073')... ....(' 2074')... 但我最终还是......((' 2074'))......我无法理解为什么。
给出以下javascript代码:
var sGroupIdentifier = "2073";
var sSelectedGroupTR = "... onclick=\"MakeNewGroup('2073')\">New</a> ... ";
var rex = new RegExp("\('" + sGroupIdentifier + "'\)", "g")
sNewGroupIdentifier = "2074";
var sNewGroupTR = sSelectedGroupTR.replace(rex, "(\'" + sNewGroupIdentifier + "\')");
alert(sNewGroupTR)
当然我可以删除.replace中的括号,但我不理解它。据我所知,有一个匹配(&#39; 2073&#39;)而不是&#39; 2073&#39;因为我使用了(而不是\
任何人都在努力解释......
答案 0 :(得分:2)
您正在使用字符串文字创建正则表达式,因此\(
最终成为正则表达式编译器的(
,而不是\(
。如果你想让正则表达式编译器看到\
,你需要在字符串文字中转义它:
var rex = new RegExp("\\('" + sGroupIdentifier + "'\\)", "g");
避免使用字符串来创建正则表达式的众多原因之一(但在你的情况下,sGroupIdentifier
是一个字符串,你可能不能)。