JavaScript の変数を使用した動的正規表現
JavaScript の正規表現は、パターン マッチングと操作のための強力なツールを提供します。ただし、これらのパターンに変数を挿入するのは難しい場合があります。
次のコード スニペットを考えてみましょう。
function(input) { var testVar = input; string = ... string.replace(/ReGeX + testVar + ReGeX/, "replacement") }
このコードは、文字列内の特定のパターンのすべての出現を指定されたパターンに置き換えようとします。交換用の文字列。ただし、正規表現内で変数を直接連結できないため、失敗します。
解決策: テンプレート文字列の使用
ES6 JavaScript では、テンプレート文字列を利用できます。変数を使用して正規表現を動的に作成します。その方法は次のとおりです。
const regex = new RegExp(`ReGeX${testVar}ReGeX`); ... string.replace(regex, "replacement");
この例では、RegExp コンストラクターは最初の引数としてテンプレート文字列を受け入れます。テンプレート文字列には、補間変数 testVar を含む元の正規表現パターンが含まれています。バックティック (``) はテンプレート文字列を示します。
ES6 と ES6 以前の比較
ES6 より前では、同じことを実現するには、より冗長なメソッドを使用する必要がありました。 result:
var regex = new RegExp("ReGeX" + testVar + "ReGeX"); ... string.replace(regex, "replacement");
古い構文も引き続き機能しますが、シンプルさと読みやすさの点でテンプレート文字列メソッドが推奨されます。
注意: 変数のエスケープ
挿入している変数に潜在的な悪意のあるコンテンツ (ユーザー入力など) が含まれている場合は、インジェクション攻撃を防ぐためにそれをエスケープする必要があることに注意することが重要です。エスケープには、escape() 関数または encodeURIComponent() 関数を使用できます。
以上がJavaScript で変数を使用して正規表現を動的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。