我写了一个Javascript RegExp测试来检测日期字符串格式,我错误地添加了一个冗余的“g”标志,并发现了一些有趣的东西。Javascript有趣的测试RegExp
var s = "2009/03/10";
var regex=/^\d{4}[/]\d{2}[/]\d{2}$/g;
alert(regex.test(s));
alert(regex.test(s));
alert(regex.test(s));
alert(regex.test(s));
我得到了一个'真',后面跟着'假',然后是'真',然后是'假'。如果我使用循环来执行它,我发现了一些更有趣的东西,我在IE和Safari中获得了四个“真实”,在FF和Chrome中获得了true,false,true和false。
for (var i=0; i<4; i++)
{
var s = "2009/03/10";
var regex=/^\d{4}[/]\d{2}[/]\d{2}$/g;
alert(regex.test(s));
}
是否有人有想法来解释为什么JavaScript的正则表达式的行为就像是什么原因浏览器返回不同的结果? (与变量声明和生命范围有关?)
非常感谢,在MDC的交代很清楚。 – Darkthread 2009-03-03 03:08:06