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 の定義
ドラフト  

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連項目

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

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