4

私の正規表現はそれほど熱くはないので、非常に新しい質問についてお詫びします。

String.replaceを使用して、文字列「../../libs/bootstrap/less」を単に「bootstrap」に変更しています。現在、私の正規表現は次のようになっています。

myString.replace(\.\.\/\.\.\/libs\/bootstrap\/less/g, 'bootstrap);

その道を逃れるためのより良い方法がなければならないと私は思います。/\"../../foo/bar/baz" /のように、エスケープするもののブロック全体を指定することは可能ですか?

4

2 に答える 2

1

私の知る限り、正規表現にはグローバル/ブロック エスケープはありません。このインスタンスでのエスケープを回避したい場合は、代わりに次のことを行うことができます。

myString.replace(/([.]{2}[/]){2}libs[/]bootstrap[/]less/g, "bootstrap");

. / 文字セット内で指定する場合はエスケープする必要はありません []

于 2012-10-18T02:01:37.190 に答える
0

正規表現で何を引用するかを簡単にするために、次のコードを使用できます。

RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};

次に、次のように適用します。

var expr = RegExp.quote('../../libs/bootstrap/less');
mystring.replace(new RegExp(expr, 'g'), 'bootstrap');
于 2012-10-18T01:54:39.697 に答える