1. ホーム
  2. javascript

[解決済み] Javascript Regexpの変数からの動的生成?[重複している]。

2022-02-11 23:07:27

質問

<余談
この質問には、すでにここで回答があります :
クローズド 4年前 .

2つの正規表現パターンを1つにまとめるには?

例えば、長い柄と小さい柄がある場合、小さい柄を長い柄の前に置く必要があります。

var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');

これではうまくいきません。文字列を連結していると、スラッシュが全部消えてしまうんです。

解決方法は?

を使用する必要があります。 RegExp :

str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));


文字列を連結しているときに、スラッシュがすべて消えてしまうのですが。

特殊な正規表現文字をエスケープするために、パターン内にバックスラッシュがある場合、(例えば \( を使用する必要があります。 バックスラッシュを含む文字列(なぜなら \ は文字列のエスケープ文字である)。 new RegExp('\\(') と同じになります。 /\(/ .

だから、あなたのパターンは、そうならなければならない。

var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';