JavaScript に RegExp.escape 関数はありますか? 質問する

JavaScript に RegExp.escape 関数はありますか? 質問する

あらゆる可能な文字列から正規表現を作成したいだけです。

var usersString = "Hello?!*`~World()[]";
var expression = new RegExp(RegExp.escape(usersString))
var matches = "Hello".match(expression);

そのための組み込みメソッドはありますか?もしない場合は、何を使うのですか?RubyにはRegExp.escape自分で書く必要はないと思います。どこかに標準的なものがあるはずです。

ベストアンサー1

別の回答にリンクされている関数は不十分です。文字グループ内で範囲に使用される または (文字列の先頭と末尾) を^エスケープ$できません。-

この機能を使用します:

function escapeRegex(string) {
    return string.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&');
}

一見不要と思われるかもしれませんが、-( と同様に^) をエスケープすると、関数は正規表現の本体だけでなく、文字クラスに挿入される文字をエスケープするのにも適したものになります。

エスケープにより、/この関数は、後で評価するために JavaScript 正規表現リテラルで使用される文字をエスケープするのに適したものになります。

どちらかをエスケープしてもデメリットはないので、より幅広いユースケースをカバーするためにエスケープするのは理にかなっています。

確かに、これが標準の JavaScript の一部ではないというのは残念な欠点です。

おすすめ記事