正規表現の概要

正規表現は、一連の文字に一致するパターンを表します。通常、正規表現は、テキスト値が特定のパターンと一致しているか (ユーザーが入力した電話番号の桁数が正しいかなど) を確認するときや、特定のパターンに一致するテキスト値の一部を置換するときに使用します。たとえば、次の正規表現では、文字 A、B、C が順に連続して出現するパターンを定義しています。

/ABC/

正規表現リテラルを囲む区切り文字はスラッシュ (/) です。

多くの場合、正規表現は単純な文字の連続ではなく複雑なパターンを見つけるために使用します。たとえば、次の正規表現では、文字 A、B、C が順に連続して出現し、その後に任意の数字が続くパターンを定義しています。

/ABC\d/

\d というコードが、"任意の数字" を意味します。円記号 (\) はエスケープ文字と呼ばれ、正規表現の中では、直後に続く文字 (この場合は d) との組み合わせによって特別な意味を表現します。この章では、各種のエスケープ文字シーケンスと、正規表現シンタックスに関するその他の機能についても説明します。

次の正規表現では、ABC という一連の文字が出現し、その後に任意の個数の数字が続くパターンを定義しています (アスタリスクが付いていることに注意してください)。

/ABC\d*/

このアスタリスク文字 (*) は、"メタ文字" の一種です。メタ文字とは、正規表現の中で特別な意味を持つ文字のことです。アスタリスクは "繰り返し制御文字" と呼ばれる種類のメタ文字で、文字または文字グループの繰り返しを指定する場合に使用します。詳細については、繰り返し制御文字を参照してください。

正規表現には、パターンに加え、その正規表現の一致方法を指定するフラグを必要に応じて設定できます。たとえば、次の正規表現で使用している i フラグは、ストリング内の一致箇所を探す際に大文字と小文字を区別しないことを指定するものです。

/ABC\d*/i

詳細については、フラグとプロパティを参照してください。

ストリング内でパターンに一致する箇所を検索および置換するには、String クラスのメソッドに対して正規表現のパラメータを指定します。次に例を示します。

var pattern:RegExp = /\d+/; // 連続する 1 桁以上の数字に一致する
var str:String = "Test: 337, 4, or 57.33.";
trace(str.search(pattern));     // 6

trace(str.match(pattern));     // 337

var pattern:RegExp = /\d+/g; // g フラグによるグローバル一致

trace(str.match(pattern)); // 337,4, 57, 33

正規表現のパラメータを指定できる String クラスのメソッドとしては、match() メソッド、replace() メソッド、search() メソッドおよび split() があります。これらのメソッドの詳細については、ストリング内のパターンの検索およびサブストリングの置換を参照してください。

RegExp クラスには、test() メソッドと exec() メソッドがあります。詳細については、ストリングに対して正規表現を使用するメソッドを参照してください。


Flex 2.01