如上图所示:第一种写法下面对 '$3.23' 识别为 false,但第二种,仅仅是去掉了一个参数 g,却通过了,没想明白。按理第一种也应该是通过的,请大家指导指导!
2 回答
大话西游666
TA贡献1817条经验 获得超14个赞
// 举个例子
var reg = /\w+/g;
reg.test('ab'); // true
console.log(reg.lastIndex); // 2
// 再执行一遍就是false了。
reg.test('ab'); // false
console.log(reg.lastIndex); // 0
// 再执行一遍就是true了。
reg.test('ab'); // true
console.log(reg.lastIndex); // 2
// 再执行一遍又是false了,如此反复,所以用g标识后,看起来很诡异。因为每次匹配开始位置变了。
reg.test('ab'); // false
// MDN 正则这块有这个知识点。不过现在好像打不开了...
7.2.4. 修饰符g
,对exex
和test
的影响
正则实例的lastIndex
属性,表示尝试匹配时,从字符串的lastIndex
位开始去匹配。
字符串的四个方法,每次匹配时,都是从0
开始的,即lastIndex
属性始终不变。
而正则实例的两个方法exec
、test
,当正则是全局匹配时,每一次匹配完成后,都会修改lastIndex
。
添加回答
举报
0/150
提交
取消