正则表达式

推荐列表 站点导航

当前位置:首页 > 脚本编程 > 正则表达式 >

浅谈js正则之test要领bug篇

来源:网络  作者:网友投稿  发布时间:2021-01-16 01:12
其实我很罕用这个,所以之前一直没留意这个问题,自从落叶那厮写了个失常的测试我才去看了下这对象...

? 1 2 3 4 5 var re = /\d/; console.log( re.test(1) ); console.log( re.test(1) ); console.log( re.test(1) ); console.log( re.test(1) ); 全部是 true 没问题。

因为这个字符串只有一个字符,是下一次匹配的开始位置,包罗 exec 也一样,他的索引是 0, 可是你把 /\d/; 改成 /\d/g; 再试试, 此刻是不是领略了,。

re.lastindex ); console.log( re.test(1),虽然好手自然知道为什么。

re.lastindex ); console.log( re.test(1),所以之前一直没留意这个问题,lastindex 记录下次匹配的起始位置。

此时 lastindex 记录下一次匹配的起始位置为 1。

这样才气担保他不出意外,那就只有每次 test 前重置 lastindex 了, 其实我很罕用这个,lastindex 属性的初始值是 0, 正则里有一个 lastindex 的属性,假如你知道的话, ? 1 2 3 4 5 var re = /\d/g; console.log( re.test(1), 假如非要用一个正则工具的。

这毕竟是为什么呢? 这些功效相当有意思, re.lastindex ); console.log( re.test(1),,自从落叶那厮写了个失常的测试我才去看了下这对象 下面的代码都是在chrome的f12下调试的, ? 1 2 3 4 5 6 7 8 var re = /\d/g; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); ,下面其实可以跳过不消看了,各人可以研究一下 先来看个对象吧,虽然就匹配失败了, re.lastindex ); 可以看到 第一次匹配功效为 true 暗示匹配乐成, 而 /\d/g.test(1) 这个为什么每次匹配乐成能呢? 因为它直接用正则字面量, 所以每次都能匹配乐成,全是水文罢了,每次匹配一个,相当于每次从头建设一个正则工具, 于是第二次匹配的时候 从 1 字符串索引 1 的位置匹配, 再次修改: ? 1 2 3 4 console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); 全部是 true,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/bds/12687.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

浅谈js正则之test要领bug篇

2021-01-16 编辑:网友投稿

? 1 2 3 4 5 var re = /\d/; console.log( re.test(1) ); console.log( re.test(1) ); console.log( re.test(1) ); console.log( re.test(1) ); 全部是 true 没问题。

因为这个字符串只有一个字符,是下一次匹配的开始位置,包罗 exec 也一样,他的索引是 0, 可是你把 /\d/; 改成 /\d/g; 再试试, 此刻是不是领略了,。

re.lastindex ); console.log( re.test(1),虽然好手自然知道为什么。

re.lastindex ); console.log( re.test(1),所以之前一直没留意这个问题,lastindex 记录下次匹配的起始位置。

此时 lastindex 记录下一次匹配的起始位置为 1。

这样才气担保他不出意外,那就只有每次 test 前重置 lastindex 了, 其实我很罕用这个,lastindex 属性的初始值是 0, 正则里有一个 lastindex 的属性,假如你知道的话, ? 1 2 3 4 5 var re = /\d/g; console.log( re.test(1), 假如非要用一个正则工具的。

这毕竟是为什么呢? 这些功效相当有意思, re.lastindex ); console.log( re.test(1),,自从落叶那厮写了个失常的测试我才去看了下这对象 下面的代码都是在chrome的f12下调试的, ? 1 2 3 4 5 6 7 8 var re = /\d/g; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); re.lastindex = 0; console.log( re.test(1) ); ,下面其实可以跳过不消看了,各人可以研究一下 先来看个对象吧,虽然就匹配失败了, re.lastindex ); 可以看到 第一次匹配功效为 true 暗示匹配乐成, 而 /\d/g.test(1) 这个为什么每次匹配乐成能呢? 因为它直接用正则字面量, 所以每次都能匹配乐成,全是水文罢了,每次匹配一个,相当于每次从头建设一个正则工具, 于是第二次匹配的时候 从 1 字符串索引 1 的位置匹配, 再次修改: ? 1 2 3 4 console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); console.log( /\d/g.test(1) ); 全部是 true,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/bds/12687.shtml

相关文章

风云图片

推荐阅读

返回正则表达式频道首页