猿问

js 正则表达式 g 参数的一个小问题

如上图所示:第一种写法下面对 '$3.23' 识别为 false,但第二种,仅仅是去掉了一个参数 g,却通过了,没想明白。按理第一种也应该是通过的,请大家指导指导!

莫回无
浏览 491回答 2
2回答

大话西游666

// 举个例子var reg = /\w+/g;reg.test('ab'); // trueconsole.log(reg.lastIndex); // 2// 再执行一遍就是false了。reg.test('ab'); // falseconsole.log(reg.lastIndex); // 0// 再执行一遍就是true了。reg.test('ab'); // trueconsole.log(reg.lastIndex); // 2// 再执行一遍又是false了,如此反复,所以用g标识后,看起来很诡异。因为每次匹配开始位置变了。reg.test('ab'); // false// MDN 正则这块有这个知识点。不过现在好像打不开了...7.2.4. 修饰符 g,对 exex 和 test 的影响正则实例的 lastIndex 属性,表示尝试匹配时,从字符串的 lastIndex 位开始去匹配。字符串的四个方法,每次匹配时,都是从 0 开始的,即 lastIndex 属性始终不变。而正则实例的两个方法 exec、test,当正则是全局匹配时,每一次匹配完成后,都会修改 lastIndex。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答