RegExp JavaScript错误测试

RegExp JavaScript error test

本文关键字:测试 错误 JavaScript RegExp      更新时间:2023-09-26

这是一个错误?

execute in firebug

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 

为什么会发生这种情况?

发生这种情况是因为您在正则表达式中包含了g标志。该标志保留了对.test()调用之间的状态。在成功匹配之后,下一次尝试将尝试对源字符串的其余部分进行匹配,并且匹配将失败。所以你得到了8次成功的匹配,其中穿插着失败。

第一次呼叫.test()成功。正则表达式对象"记住"它应该在匹配字符串的末尾之后开始,这将是源字符串的末尾。这将在下一次迭代中不匹配,但由于尝试耗尽了源字符串的末尾,正则表达式将重置为位置0。然后,下一次尝试就会成功,如此反复。

简写:去掉g标志