The lastIndex is a read/write integer property of regular expression instances that specifies the index at which to start the next match.
Property attributes of regexp.lastIndex |
|
|---|---|
| Writable | yes |
| Enumerable | no |
| Configurable | no |
Syntax
regExpObj.lastIndex
Description
This property is set only if the regular expression instance used the "g" flag to indicate a global search. The following rules apply:
- If
lastIndexis greater than the length of the string,test()andexec()fail, thenlastIndexis set to 0. - If
lastIndexis equal to the length of the string and if the regular expression matches the empty string, then the regular expression matches input starting atlastIndex. - If
lastIndexis equal to the length of the string and if the regular expression does not match the empty string, then the regular expression mismatches input, andlastIndexis reset to 0. - Otherwise,
lastIndexis set to the next position following the most recent match.
Examples
Using lastIndex
Consider the following sequence of statements:
var re = /(hi)?/g;
Matches the empty string.
console.log(re.exec('hi'));
console.log(re.lastIndex);
Returns ["hi", "hi"] with lastIndex equal to 2.
console.log(re.exec('hi'));
console.log(re.lastIndex);
Returns ["", undefined], an empty array whose zeroth element is the match string. In this case, the empty string because lastIndex was 2 (and still is 2) and "hi" has length 2.
Specifications
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.2. JavaScript 1.5: lastIndex is a property of a RegExp instance, not the RegExp object. |
| ECMAScript 5.1 (ECMA-262) The definition of 'RegExp.lastIndex' in that specification. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'RegExp.lastIndex' in that specification. |
Standard | |
| ECMAScript 2017 Draft (ECMA-262) The definition of 'RegExp.lastIndex' in that specification. |
Draft |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |