regular expressionNN 4 IE 4 ECMA 3

regular expression オブジェクトは RegExp オブジェクトのインスタンスです。正規表現オブジェクトはそれぞれ、文字列のパターンマッチングを行うために使用されるパターンから構成されています。正規表現のパターンは簡単な文字列であることも、基本的にそれだけで独立して言語である表記を使用した高度な表現であることもあります。JavaScript 1.2 での正規表現の実装は、Perl での実装方法に非常に類似しています。この概念については、JavaScript 1.2 以降の関連文書を参照してください。

 

正規表現オブジェクトを作成するには、パターンをスラッシュで囲み、変数に表現全体を代入します。たとえば、次のステートメントは簡単な語のパターンを持つ正規表現を作成します。

 
var re = /greet/;
 

次に re 変数を、文字列内でパターンを探すさまざまなメソッド内でパラメータとして使用します。また変数に代入する代わりに、表現を直接メソッドパラメータとして使用することもできます。

 

また正規表現の表記は、語の左右の単語区切りや、数値、または文字などのような、複雑な概念として機能する多数のメタ文字から構成されます。たとえば、前述の文字パターンをパターンが語である場合に限り (また greetins などのような他の語の一部ではない) 探す場合には、メタ文字を使用してパターンの両側に単語の区切りがあることを示します。

 
var re = /\bgreet\b/;
 

次の表に、JavaScript 1.2 で使用されている正規表現の表記を要約しました。

 
文字マッチング
 \b
単語の区切り/\bto/ は "tomorrow" と一致し、/to\b/ は "Soweto" と一致します。 /\bto\b/ は "to" に一致します。
 \B
単語の区切りなし/\Bto/ は "stool" や "Soweto" と一致し、/to\B/ は "stool" や "tomorrow" と一致します。 /\Bto\B/ は "stool" と一致します。
 \d
0 ~ 9 の数値/\d\d/ は "42" と一致します。
 \D
数値以外の文字/\D\D/ は "to" と一致します。
 \s
1 つのスペース/under\sdog/ は "under dog" と一致します。
 \S
スペース以外の 1 文字/under\Sdog/ は "under-dog" と一致します。
 \w
英数字またはアンダースコア/1\w/ は "1A" と一致します。
 \W
\w 以外の文字/1\W/ は "1%" と一致します。
 .
改行文字を除く任意の 1 文字/../ は "Z3" と一致します。
 [...]
かっこ内にある文字のいずれか/J[aeiou]y/ は "Joy" と一致します。
 [^...]
かっこ内の文字以外の任意の 1 文字/J[^eiou]y/ は "Jay" と一致します。
 *
ゼロ回以上/\d*/ は ""、"5"、"444" と一致します。
 ?
ゼロ回または 1 回/\d?/ は "" または "5" と一致します。
 +
1 回以上/\d+/ は "5" または "444" と一致します。
 {n}
n 回/\d{2}/ は "55" と一致します。
 {n,}
n 回以上/\d{2,}/ は "555" と一致します。
 {n,m}
最低 n 回、最高 m 回/\d{2,4}/ は "5555" と一致します。
 ^
文字列や行の始め/^Sally/ は "Sally says..." と一致します。
 $
文字列または行の終わり/Sally.$/ は "Hi, Sally." と一致します。
 

正規表現を作成する場合、オプションとしてグローバルで機能するように、またマッチで大文字と小文字を無視するように表現を設定することができます。メソッドで正規表現が検索と置換を行い、目標はすべて置換した結果である場合には、通常このようにします。これらのスイッチをオンにする補助キーは、文字 gi です。これらの補助キーは単独で、または gi のように一緒に使用することもできます。

 

正規表現でパターンを作成すると、正規表現オブジェクトメソッドおよび正規表現パラメータを受け付ける String オブジェクトメソッドでアクションが実行されます。

 
正規表現オブジェクトの作成
 
var regExpressionObj = /pattern/ [g | i | gi];
var regExpressionObj = new RegExp(["pattern", ["g" | "i" | "gi"]]);
 
プロパティ
 
constructor global ignoreCase lastIndex source
 
メソッド
 
compile() exec() test()
 
constructorNN 4 IE 4 ECMA 3

読み書き

Array オブジェクトのプロパティを参照してください。

 
global、ignoreCaseNN 4 IE 5 (Mac)/5.5 (Win) ECMA 3

読み取り専用

正規表現オブジェクトのインスタンスの作成時に g または i の補助キーが設定されていた場合にブール値 true を返します。正規表現オブジェクトに両方の補助キーが設定されている場合には (gi)、プロパティをそれぞれ個別にテストする必要があります。

 
 
if (myRE.global && myRE.ignoreCase) {
    ...
}
 

truefalse のブール値

 
lastIndexNN 4 IE 4 ECMA 3

読み書き

次のパターンマッチングを開始する、文字列内の文字のゼロから始まるインデックス値です。新しい検索では、値はゼロです。別の場所から開始したり、特定の文字をスキップする場合には、手動で設定することもできます。

 
 
myRE.lastIndex = 30;
 

整数値

 
sourceNN 4 IE 4 ECMA 3

読み取り専用

正規表現を作成するために使用される文字の文字列を返します。値には表現を囲むスラッシュ区切りは含まれません。

 
 
var myREasString = myRE.source;
 

文字列

 
compile()NN 4 IE 4 ECMA なし

compile("pattern"[, "g" | "i" | "gi"])

正規表現パターンを本来の正規表現オブジェクトにコンパイルします。このメソッドは主に、スクリプトの実行中にパターンが変更する可能性のある正規表現を再コンパイルするために使用されます。

 
戻り値

正規表現のインスタンスへの参照

 
パラメータ
 
  • pattern
      引用された文字列としての、あらゆる正規表現パターン。グローバル、大文字小文字の無視、またはその両方の補助キーは、引用符で囲んだ別個のパラメータとして指定する必要があります。
 
exec()NN 4 IE 4 ECMA 3

exec(string)

パラメータとして渡された文字列内で現在の正規表現パターンを検索します。この形式には一般的なシーケンスが続きます。

 
var myRE = /somePattern/;
var resultArray = myRE.exec("someString");
 

静的 RegExp と正規表現のインスタンス (例内では myRE) オブジェクトの両方のプロパティは、検索の結果に関する情報で更新されます。また exec() メソッドは、RegExp オブジェクトプロパティに類似したデータの配列を返します。返される配列には次のプロパティが含まれます。

 
 
  • index
      パターンにマッチする、文字列内にある開始文字のゼロから始まるインデックス
  • input
      検索中の文字列
  • [0]
      パターンに一致する文字列
  • [1]...[n]
      かっこに入ったコンポーネントマッチの結果の文字列
 

exec() メソッドの結果は変数に入れられますが、RegExp プロパティ値は次の正規表現演算で変化します。正規表現がグローバル検索に設定されている場合には、その後の myRE.exec("someString") のコールは、最後のマッチ位置から検索が続行します。

 

特定の exec() コールでマッチが見つからない場合には、null が返されます。

 
戻り値

マッチがある場合にはマッチの配列、ない場合には null

 
パラメータ
 
  • string
      検索する文字列
 
test()NN 4 IE 4 ECMA 3

test(string)

パラメータとして渡された文字列内に正規表現のマッチがある場合にはブール値の true、ない場合には false を返します。検索結果に関し、これ以外の情報はありません。これは文字列内に一致するパターンが存在するかどうかを確認する最も速い方法です。

 
戻り値

truefalse のブール値

 
パラメータ
 
  • string
      検索する文字列