javascript正则表达式重复括号

时间:2013-02-11 09:29:19

标签: javascript regex

我想替换......(' 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;因为我使用了(而不是\

任何人都在努力解释......

1 个答案:

答案 0 :(得分:2)

您正在使用字符串文字创建正则表达式,因此\(最终成为正则表达式编译器的(,而不是\(。如果你想让正则表达式编译器看到\,你需要在字符串文字中转义它:

var rex = new RegExp("\\('" + sGroupIdentifier + "'\\)", "g");

避免使用字符串来创建正则表达式的众多原因之一(但在你的情况下,sGroupIdentifier是一个字符串,你可能不能)。