2

私が現在使用しているコードは、すべての特殊文字に対して個別に「置換」を記述する必要があるため、醜いです。

var str = ":''>";
str.replace("'","\\'").replace(">","\\>");

< > * ( ) と ?の先頭にバックスラッシュを追加したいと思います。正規表現を介して。

4

1 に答える 1

8

文字を文字セットと一致させる正規表現を使用して、次のことを試すことができます。

str = str.replace(/([<>*()?])/g, "\\$1");

デモ: http://jsfiddle.net/8ar3Z/

内の任意の文字 (指定した文字) と一致し、[ ]それらを周囲でキャプチャして()(置換されたテキスト部分のように参照できるように$1)、先頭に\\.


アップデート:

@TJCrowder さんからの提案として、()でキャプチャする必要はありません。$1$&

str = str.replace(/[<>*()?]/g, "\\$&");

デモ: http://jsfiddle.net/8ar3Z/1/


参考文献:

于 2013-06-21T15:21:02.700 に答える