📜  JavaScript | lastIndex 属性(1)

📅  最后修改于: 2023-12-03 15:16:08.063000             🧑  作者: Mango

JavaScript | lastIndex 属性

在 JavaScript 中,lastIndex 属性是一个 RegExp 对象的属性,表示下一次匹配的起始索引。这个属性只有在使用正则表达式对象的 exec() 或 test() 方法时才有用处。

用法

lastIndex 属性是一个可读可写的属性,可以通过点运算符或方括号访问。

let re = /cat/g;
console.log(re.lastIndex); // 0

可以看到,lastIndex 的初始值为 0。

当使用 exec() 或 test() 方法来匹配字符串时,lastIndex 属性会被设置为匹配的字符串的下一个字符的索引。

let str = "cat dog cat";
let re = /cat/g;

console.log(re.test(str)); // true
console.log(re.lastIndex); // 4

console.log(re.test(str)); // false
console.log(re.lastIndex); // 0

在上面的示例中,第一次 re.test(str) 返回 true,表示 str 中存在 "cat",并且 lastIndex 被设置为 4,即下一次匹配从 " dog cat" 的 "d" 开始。第二次 re.test(str) 返回 false,因为再次从起始位置匹配,并且 lastIndex 被重置为 0。

如果正则表达式的 global 标志设置为 false,则 lastIndex 属性没有任何作用。

let str = "cat dog cat";
let re = /cat/;

console.log(re.test(str)); // true
console.log(re.lastIndex); // 0
总结

lastIndex 属性用于存储下一次匹配的起始索引。如果 global 标志为 false,则此属性无效。

lastIndex 属性经常用于迭代一个字符串,例如查找所有匹配项,可以使用 while 循环和 exec() 方法。

let str = "cat dog cat";
let re = /cat/g;

let match;
while ((match = re.exec(str)) !== null) {
  console.log(`Found ${match[0]} at ${match.index}. Next starts at ${re.lastIndex}.`);
}

输出如下:

Found cat at 0. Next starts at 3.
Found cat at 8. Next starts at 0.