0

('私はこれをに置き換えようとして(\'')ましたが、 RegExp\')に慣れていないため、試行回数はほとんどありませんでした。

私が試したmyText.replace(/\(\'/g, "(\')");のはmyText.replace(/\'\)/g, "\')");

4

2 に答える 2

2

これは、正規表現なしで 1 行で実行できます。

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

問題は正規表現ではなく、代替品です。バックスラッシュをエスケープする必要があります。そうしないと、(不必要に) エスケープされます':

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

もう少し高度な手法 (つまり、キャプチャ グループと先読み) を使用すると、これらを 1 つの正規表現に組み合わせることができます。

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

正規表現は、('または'が続く場合に一致します)(実際には一致しません)。同時に、(そこにある場合は「キャプチャ」します。$1置換文字列の は、キャプチャ(された場合は元に戻し、単に を書き出します\')後ろに書く必要はありません。先読みを使用したため、それが試合の一部になることはありませんでした。

于 2012-10-29T10:48:59.400 に答える