RegExp.lastIndex

lastIndex は、次のマッチの始まりの位置を示す、正規表現インスタンスの読み書き可能な整数値のプロパティです。

RegExp.lastIndex のプロパテイ属性
書込可能
列挙可能 不可
設定可能 不可

構文

regExpObj.lastIndex

説明

このプロパティは、正規表現が、グローバルサーチを示す "g" を使用した場合にのみ、セットされます。以下のルールが適用されます。:

  • lastIndex が文字列の長さよりも大きければ、test() 及び exec() は失敗し、lastIndex は 0 にセットされます。
  • lastIndex が文字列の長さと等しく、かつ、正規表現が空文字列にマッチする場合には、正規表現は lastIndex の始まりの入力にマッチします。
  • lastIndex が文字列の長さと等しく、かつ、正規表現が空文字列にマッチしない場合、正規表現は入力にマッチせず、lastIndex は 0 にリセットされます。
  • それ以外の場合は、lastIndex はごく最近のマッチに続く次の位置にセットされます。

lastIndex の使用

例えば、以下の連続した処理を考えてみてください。:

var re = /(hi)?/g;

空文字列にマッチします。

console.log(re.exec('hi'));
console.log(re.lastIndex);

lastIndex が 2 になり["hi", "hi"] が返ります。

console.log(re.exec('hi'));
console.log(re.lastIndex);

["", undefined] という空配列が返り、その配列のゼロ番目の要素がマッチした文字列です。この場合では、lastIndex が 2 (かつ、いまだに 2 である) であったときに、"hi" の長さが 2 であるので、空文字列です。

仕様

仕様 ステータス コメント
ECMAScript 3rd Edition (ECMA-262) 標準 初期定義。JavaScript 1.2 で実装。JavaScript 1.5: lastIndexRegExp インスタンスのプロパティになり、RegExp オブジェクトのプロパティではなくなった。
ECMAScript 5.1 (ECMA-262)
RegExp.lastIndex の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.lastIndex の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
RegExp.lastIndex の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, teoli, ethertank, Potappo, Mgjbot
 最終更新者: YuichiNukiyama,