> var p = /abc/gi;
> var s = "abc";
> p.test(s);
true
> p.test(s);
false;
Run Code Online (Sandbox Code Playgroud)
当我在Chrome控制台上运行此代码时,我在上面输出了此输出.每次我调用'.test()',我都会得到不同的价值.有人可以向我解释为什么会这样吗?谢谢
行为是由于"g"修饰符,即匹配三次,第四次不匹配:
> var p = /a/gi;
> var s = "aaa";
> p.test(s)
true
> p.test(s)
true
> p.test(s)
true
> p.test(s)
false
Run Code Online (Sandbox Code Playgroud)
看到类似的问题:为什么在Javascript中使用全局标志的RegExp会给出错误的结果?
该g
标志使您使用的RegExp文字跟踪匹配LastIndex
如果你这样做;
print( p.test(s), p.lastIndex )
print( p.test(s), p.lastIndex )
Run Code Online (Sandbox Code Playgroud)
你会看到
true,3
false,0
Run Code Online (Sandbox Code Playgroud)
所以第二次测试失败,因为第一次没有增量匹配.
归档时间: |
|
查看次数: |
1591 次 |
最近记录: |