1. ホーム
  2. javascript

[解決済み] 文字列変数を使ってRegExpをオンザフライで作成する

2022-05-07 19:35:36

質問

以下のような再利用可能なものを作りたいとします。

function replace_foo(target, replacement) {
   return target.replace("string_to_replace",replacement);
}

こんな感じでやってみようかな。

function replace_foo(target, string_to_replace, replacement) {
   return target.replace(string_to_replace,replacement);
}

文字列リテラルでは、これは十分に簡単です。しかし、もう少し巧妙に正規表現を使いたい場合はどうしたらよいでしょうか。たとえば しかし string_to_replace . 本能的に、私は上記のようなことをやって拡張しようとします。

function replace_foo(target, string_to_replace, replacement) {
   return target.replace(/^string_to_replace/,replacement);
}

これはうまくいかないようです。私の推測では、これは string_to_replace は文字列を表す変数ではなく、文字列リテラルです。文字列変数を使って、JavaScriptの正規表現をその場で作成することは可能でしょうか?可能であれば、このようなものがあれば最高です。

function replace_foo(target, string_to_replace, replacement) {
   var regex = "/^" + string_to_replace + "/";
   return target.replace(regex,replacement);
}

解決方法は?

そこには new RegExp(string, flags) ここで flagsg または i . だから

'GODzilla'.replace( new RegExp('god', 'i'), '' )

は、次のように評価されます。

zilla