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: lastIndex は RegExp インスタンスのプロパティになり、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 |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |