我写了一个Javascript RegExp测试来检测日期字符串格式,我错误地添加了一个冗余的"g"标志,发现了一些有趣的东西.
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));
Run Code Online (Sandbox Code Playgroud)
我得到一个'true'后跟一个'false',然后是另一个'true',然后是另一个'false'.
如果我使用循环来执行它,我发现更有趣的东西,我在IE和Safari中有四个"真实",在FF,Chrome中有真,假,真,假.
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));
}
Run Code Online (Sandbox Code Playgroud)
有没有人有想法解释为什么Javascript正则表达式会像这样,以及导致浏览器返回不同结果的原因是什么?(与变量声明和生命范围有关?)
| 归档时间: |
|
| 查看次数: |
2560 次 |
| 最近记录: |