正規表現のインスタンスを作成するには 2 つの方法があります。 1 つは正規表現を区切り文字のスラッシュ(
/
)で囲んで記述する方法であり、もう 1 つは
new
コンストラクターを使用する方法です。例えば、次の正規表現はいずれも同等です。
var pattern1:RegExp = /bob/i;
var pattern2:RegExp = new RegExp("bob", "i");
ストリングリテラルを引用符で囲むのと同じように、正規表現リテラルを記述する場合はスラッシュで囲みます。 正規表現のうち 2 つのスラッシュで囲んだ部分がパターンです。それに加え、後ろのスラッシュに続いてフラグを指定することもできます。 フラグは正規表現を構成する要素と見なされますが、パターンとは区別されています。
new
コンストラクターを使用する場合は、2 つのストリングによって正規表現を定義します。次のように、第 1 のストリングでパターンを指定し、第 2 のストリングでフラグを指定します。
var pattern2:RegExp = new RegExp("bob", "i");
スラッシュで囲んだ正規表現定義の中にスラッシュを含める場合は、中のスラッシュの直前にエスケープ文字の円記号(
¥
)を置く必要があります。例えば、次の正規表現は
1/2
というパターンに一致します。
var pattern:RegExp = /1\/2/;
new
コンストラクターによる正規表現定義の中に引用符を含める場合は、ストリングリテラルの場合と同じように、中の引用符の直前にエスケープ文字の円記号(
¥
)を置く必要があります。例えば、次の正規表現は
eat at "joe's"
というパターンに一致します。
var pattern1:RegExp = new RegExp("eat at \"joe's\"", "");
var pattern2:RegExp = new RegExp('eat at "joe\'s"', "");
スラッシュで囲んだ正規表現定義の中に引用符を含める場合は、エスケープ文字の円記号を付けないでください。 同じように、
new
コンストラクターによる正規表現定義の中にスラッシュを含める場合は、エスケープ文字の円記号を付けないでください。次の正規表現は同等で、いずれも
1/2 "joe's"
というパターンに一致します。
var pattern1:RegExp = /1\/2 "joe's"/;
var pattern2:RegExp = new RegExp("1/2 \"joe's\"", "");
var pattern3:RegExp = new RegExp('1/2 "joe\'s"', '');
また、
new
コンストラクターによる正規表現定義の中で、円記号(
¥
)から始まるメタシーケンス(任意の数字を意味する
¥d
など)を使用する場合は、次のように円記号を二重に入力する必要があります。
var pattern:RegExp = new RegExp("\\d+", ""); // matches one or more digits
この場合は、
RegExp()
コンストラクターメソッドの最初のパラメーターがストリングで、ストリングリテラルの中で単一の円記号を認識させるためには円記号を二重に入力する必要があるため、円記号を二重に入力します。
以降のセクションでは、正規表現パターンの定義に使用するシンタックスについて説明します。
フラグについて詳しくは、
フラグとプロパティ
を参照してください。