lastIndex プロパティ

検索文字列内で次に文字が一致する位置を返します。

RegExp.lastIndex

通常、このプロパティに関連するオブジェクトは、グローバルな RegExp オブジェクトです。

解説

lastIndex プロパティの値は、文字列の先頭位置の 0 を基にしています。初期値は –1 です。この値は、検索が成功するたびに変更されます。

lastIndex プロパティは、RegExp オブジェクトの exec メソッドと test メソッド、および String オブジェクトの match メソッド、replace メソッド、split メソッドにより変更されます。

lastIndex プロパティの値には、次の規則が適用されます。

  • 一致する文字列がない場合、-1 に設定されます。
  • lastIndex プロパティの値を文字列よりも長く設定してから test メソッドまたは exec メソッドを実行すると、メソッドの実行は失敗し、lastIndex プロパティに -1 が設定されます。
  • lastIndex プロパティの値が文字列の長さと等しい場合、パターンが空の文字列であれば、正規表現パターンが一致します。それ以外の場合は、検索は失敗し、lastIndex プロパティに -1 が再設定されます。
  • 上記以外の場合は、lastIndex プロパティは、パターンに一致する最後に見つかった文字列の直後の位置を示す値が設定されます。

使用例

次のコードは、lastIndex プロパティの使用例です。この関数は、文字列の検索を繰り返し、文字列内にある各文字の index 値および lastIndex 値を出力します。

function RegExpTest(){
  var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
  if (ver >= 5.5){
    var src = "The rain in Spain falls mainly in the plain.";
    var re = /\w+/g;
    var arr;
    while ((arr = re.exec(src)) != null)
       print(arr.index + "-" + arr.lastIndex + "\t" + arr);
  }
  else{
    alert("この処理を有効にするには JScript の新しいバージョンが必要です");
  }
}

必要条件

バージョン 3

参照

RegExp Object プロパティ | 正規表現の構文

対象: RegExp オブジェクト