我寫了一個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