あらゆる可能な文字列から正規表現を作成したいだけです。
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 の一部ではないというのは残念な欠点です。