我试图将('
与(\'
和')
替换为\')
我的尝试很少,因为我对 RegExp 。
我尝试的是myText.replace(/\(\'/g, "(\')");
和myText.replace(/\'\)/g, "\')");
答案 0 :(得分:2)
您可以在没有正则表达式的情况下在一行中执行此操作:
myText = myText.split("('").join("(\\'").split("')").join("\\')");
答案 1 :(得分:1)
问题不是你的正则表达而是你的替代品。你需要逃避反斜杠,否则它(不必要地)逃脱'
:
myText = myText.replace(/\('/g, "(\\'");
myText = myText.replace(/'\)/g, "\\')");
使用一些稍微更高级的技术(即捕获组和前瞻),您可以将它们组合成一个正则表达式:
myText = myText.replace(/(\()'|'(?=\))/g, "$1\\'");
正则表达式匹配('
或'
,如果它后跟)
(实际上没有匹配)。与此同时,如果它存在,我们会“捕获”(
。替换字符串中的$1
会将(
放回原位(如果已捕获),然后只写出\'
。无需写回)
。因为我们使用了前瞻,所以它从未成为比赛的一部分。