lastIndex プロパティ
更新 : 2007 年 11 月
検索文字列内で次に文字が一致する位置を返します。
{RegExp | reArray}.lastIndex
引数
RegExp
必ず指定します。グローバルな RegExp オブジェクトを指定します。reArray
必ず指定します。Regular Expression オブジェクトの exec メソッドによって返される配列を指定します。
解説
lastIndex プロパティの値は、文字列の先頭位置の 0 を基にしています。初期値は –1 です。この値は、検索が成功するたびに変更されます。
RegExp オブジェクトの lastIndex プロパティは、RegExp オブジェクトの exec メソッドと test メソッド、および String オブジェクトの match、replace、split の各メソッドによって変更されます。
lastIndex プロパティの値には、次の規則が適用されます。
一致する文字列がない場合は、-1 に設定されます。
lastIndex プロパティの値を文字列よりも長く設定してから test メソッドまたは exec メソッドを実行すると、メソッドの実行は失敗し、lastIndex プロパティに -1 が設定されます。
lastIndex プロパティの値が文字列の長さと等しい場合、パターンが空の文字列であれば、正規表現パターンが一致します。それ以外の場合、検索は失敗し、lastIndex プロパティに -1 が再設定されます。
上記以外の場合、lastIndex プロパティは、パターンに一致する最後に見つかった文字列の直後の位置を示す値が設定されます。
RegExp.lastIndex プロパティの初期値は –1 です。プロパティの値は読み取り専用で、検索が成功するたびに変更されます。
メモ : |
---|
RegExp オブジェクトのプロパティは、高速モードで実行されている場合は利用できません。JScript の既定のモードは高速モードです。これらのプロパティを使用するプログラムをコマンド ラインからコンパイルするには、/fast- を使用して fast オプションをオフにする必要があります。ASP.NET で fast オプションをオフにするのは安全ではありません。スレッドに関する問題が発生する場合があります。 |
使用例
lastIndex プロパティの使用例を次に示します。この関数は、文字列の検索を繰り返し、文字列内にある各文字の index 値および lastIndex 値を出力します。
var src : String = "The rain in Spain falls mainly in the plain.";
var re : RegExp = /\w+/g;
var arr : Array;
while ((arr = re.exec(src)) != null)
print(arr.index + "-" + arr.lastIndex + "\t" + arr);
このプログラムの出力は次のようになります。
0-3 The
4-8 rain
9-11 in
12-17 Spain
18-23 falls
24-30 mainly
31-33 in
34-37 the
38-43 plain