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
lastIndex
is greater than the length of the string,test()
andexec()
fail, thenlastIndex
is set to 0. - If
lastIndex
is 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
lastIndex
is equal to the length of the string and if the regular expression does not match the empty string, then the regular expression mismatches input, andlastIndex
is reset to 0. - Otherwise,
lastIndex
is 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) |