javascript正则(带g符号) 多次调用test 结果交替出现
2016-08-14 13:58
363 查看
链接:https://segmentfault.com/q/1010000000582051
http://stackoverflow.com/questions/2851308/why-does-my-javascript-regex-test-give-alternating-results
如图:
参考部分:
准确描述:重复执行第二行的时候,奇数次结果为true,偶数次结果为false。
如果我们把代码改成:
执行的结果就一直为true了。所以我们有理由怀疑是复用RegExp对象带来的问题。
去搜索了一圈,在Mozilla的网站上,找到这么一句:
on the same global regular expression instance will advance past the previous match.
因为例子中的正则带了
第偶数次调用test的时候,就从前一次的lastIndex开始搜索。结果搜不到,就返回false。lastIndex置为0,下一次调用时,就又能搜到了。
http://stackoverflow.com/questions/2851308/why-does-my-javascript-regex-test-give-alternating-results
如图:
参考部分:
var reg=/\b\w+\b/g; // 1
reg.test('abcd'); // 2
准确描述:重复执行第二行的时候,奇数次结果为true,偶数次结果为false。
如果我们把代码改成:
/\b\w+\b/g.test('abcd');
执行的结果就一直为true了。所以我们有理由怀疑是复用RegExp对象带来的问题。
去搜索了一圈,在Mozilla的网站上,找到这么一句:
testcalled multiple times
on the same global regular expression instance will advance past the previous match.
因为例子中的正则带了
g,所以每次调用
test方法会先获取一个隐藏属性
lastIndex,会跳过上次已经搜索过的部分。
第偶数次调用test的时候,就从前一次的lastIndex开始搜索。结果搜不到,就返回false。lastIndex置为0,下一次调用时,就又能搜到了。
相关文章推荐
- javascript正则(带g符号) 多次调用test 结果交替出现
- 关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
- 关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
- 关于JS正则表达式中g模式下test出现true/false交替的个人见解
- JavaScript中正则表达式test()、exec()、match() 方法区别
- 正则表达式有无g参数时,test()结果的差异
- 正则表达式中的特殊符号及正则表达式的几种方法(replace,test,search)
- javascript使用以下序列表示非字母字符或特殊标点符号,常用于弹出框、正则验证
- BS开发中常用的javascript技术【常用的正则表达式及符号诠释】
- JavaScript正则表达式(二)实例方法test
- java.lang.IllegalAccessException Action中的方法调用了,却不出现结果 spring注入值为null
- javascript 在调用的时候出现乱码
- JavaScript中远程级联调用(RPC)java对象中的方法并返回结果
- javascript中正则表达式应用学习_test()
- JavaScript正则表达式符号详解
- javascript中的正则匹配函数exec(),test(),match()
- 关于多次刷新网页(该网页调用COM)出现在COM中的错误
- [转]Javascript 调用MSAgent(Desc:网页中出现魔法巫师)
- 正则表达式有无g参数(全局搜索)时,test()结果的差异
- JavaScript正则表达式符号详解