0

我试图('(\'')替换它 我的尝试很少,因为我对RegExp\')不满意。

我尝试的是myText.replace(/\(\'/g, "(\')");myText.replace(/\'\)/g, "\')");

4

2 回答 2

2

您可以在没有正则表达式的情况下在一行中执行此操作:

myText = myText.split("('").join("(\\'").split("')").join("\\')");
于 2012-10-29T10:56:22.057 回答
1

问题不是你的正则表达式,而是你的替换。您需要转义反斜杠,否则它(不必要地)转义'

myText = myText.replace(/\('/g, "(\\'");
myText = myText.replace(/'\)/g, "\\')");

使用一些更高级的技术(即捕获组和前瞻),您可以将它们组合成一个正则表达式:

myText = myText.replace(/(\()'|'(?=\))/g, "$1\\'");

正则表达式匹配('或者'如果它后跟)(实际上不匹配)。同时,我们“捕获”(它是否存在。$1如果被捕获,替换字符串中的 in 会将其放置(在原位,然后简单地写出\'. 后面就不用写了)。因为我们使用了前瞻,所以它从来不是比赛的一部分。

于 2012-10-29T10:48:59.400 回答