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

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

構文

regExpObj.lastIndex

説明

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

  • 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 Latest Draft (ECMA-262)
RegExp.lastIndex の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり

関連項目

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

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