这种情况是错误的?
在萤火虫中执行
altern = /raeeoCott/ig //
for(var h = 0; h<3; h++)
for(var i = 0; i<5; i++)
if(altern.test('raeeocott'))
console.log('ddd')
h=1 :: (8 true); ?????
// 5 * 3 = 15 != 8
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
它正在发生,因为你g在正则表达式中包含了标志.该标志在调用之间保持状态.test().成功匹配后,下一次尝试将尝试匹配源字符串的其余部分,并且匹配将失败.所以你得到8次成功的比赛,穿插失败.
第一次.test()成功召唤.正则表达式对象"记住"它应该在匹配字符串结束后开始,这将是源字符串的最后一部分.这在下一次迭代时将不匹配,但由于该尝试用完了源字符串的结尾,正则表达式将重置为位置0.然后,下一次尝试将成功,并且一遍又一遍地重复.
短版:摆脱g旗帜.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |