描述
有一组字符串和一个正则表达式条件。我只是循环浏览这些行并检查它们RegExp.test():
const regex = new RegExp(`A`, `gmi`);
const examples = [
`A-3-1`,
`A-3-1`,
`A-3-1`,
`A-3-1`,
`A-3-1`,
`A-3-1`,
`A-3-1`,
`A-3-1`,
];
for (let index = 0; index < examples.length; index++) {
const example = examples[index];
console.log(`${example} -> ${regex.test(example)}`);
}
特地取了8条相同的线放在数组里。
问题
如果字符串相同且条件相同,为什么每秒都会返回一次检查。false
在不同文本上重复使用相同的正则表达式可能会产生不同的结果。
如果我们连续将相同的正则表达式应用于不同的字符串,这可能会导致不正确的结果,因为调用会
regexp.test更新属性regexp.lastIndex,因此新的字符串搜索可能会从非零位置开始。比如这里我们
regexp.test针对同一个文本调用两次,第二次查找失败:为了解决这个问题,您可以
regexp.lastIndex = 0在新搜索之前分配。来自regexp-methods文档