RegExp.lastIndex

lastIndex は正規表現インスタンスの読み書き可能なプロパティで、次の一致を開始する位置を指定します。

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

構文

regExpObj.lastIndex

解説

このプロパティは、正規表現インスタンスがグローバル検索を示すために g フラグを使用した場合、または粘着的検索を示すために y フラグを使用した場合にのみ設定されます。以下の規則が適用されます。

  • 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 (ECMA-262)
RegExp.lastIndex の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
lastIndexChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 5Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報