似乎RegExp
内在属性是有状态的。
因此,当提供全局标记g
时,在同一字符串上调用它两次会产生不同的结果,因为它会沿字符串前进搜索。
所以:
var r = /(\d{3})/g;
console.log(r.test('123')); // true
console.log(r.test('123')); // false - because the search has moved past the first match

但是如果我添加一个中间测试,我会得到以下结果:
var r = /(\d{3})/g;
console.log(r.test('123')); // true
console.log(r.test('456')); // true
console.log(r.test('123')); // true!

那么说RegExp
个实例的运作原则只考虑最后一个被评估的字符串是正确的吗?如果字符串与上一个字符串不同,它会被有效地重置吗?
答案 0 :(得分:3)
那么说RegExp实例的运行原则只考虑最后一个被评估的字符串是否正确?
是
如果字符串与上一个字符串不同,它会被有效重置吗?
正确
如果省略全局标志,是否在测试之间重置正则表达式?
右