0

我想用 ....('2074')... 替换 ...('2073')... 但我最终用 ...(('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 中的括号,但我就是不明白。据我所知,匹配 ('2073') 而不是 '2073' 因为我使用了 ( 而不是 \

有谁愿意解释...

4

1 回答 1

2

您正在使用字符串文字创建正则表达式,因此\(最终成为(正则表达式编译器,而不是\(. 如果您希望正则表达式编译器看到\,则需要在字符串文字中对其进行转义:

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

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

于 2013-02-11T09:31:55.877 回答