Javascript RegExp – lastIndex Property

lastIndex is a read/write property of RegExp objects. For regular expressions with the g attribute set, it contains an integer that specifies the character position immediately following the last match found by the RegExp.exec() and RegExp.test() methods. These methods use this property as the starting point for the next search they conduct.

This property allows you to call those methods repeatedly, to loop through all matches in a string and works only if the g modifier is set.

This property is read/write, so you can set it at any time to specify where in the target string the next search should begin. exec() and test() automatically reset lastIndex to 0 when they fail to find a match (or another match).

Buuuuut, str.replace(), str.match() NO NEED to reset the lastIndex

Simple example:

var str = 'Javascript is an interesting scripting language'
var re = /script/g
var pos = 0, match
while (match = re.exec(str)) {
  console.log('"' + str.substring(pos, pos = re.lastIndex) + '" <<== ', [match.index, pos])
}

// output:
// "Javascript" <<==  [ 4, 10 ]
// " is an interesting script" <<==  [ 29, 35 ]