Tarih dizesi formatını tespit etmek için bir Javascript RegExp testi yazdım, yanlışlıkla "g" bayrağı ekledim ve ilginç bir şey buldum. Javascript'in ilginç testi 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));
aldığım bir 'gerçek' bir 'false' izledi, sonra başka 'gerçek', daha sonra başka bir 'yanlış'.
Bunu yürütmek için bir döngü kullanırsam, daha ilginç bir şey buldum, IE ve Safari'de dört "doğru" aldım ve FF, Chrome'da doğru, yanlış, doğru, yanlış.
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));
}
herkes JavaScript regex böyle davranır ve hangi neden tarayıcılar farklı sonuçlar döndürür niçin fikri vardır mu? (değişken bildirim ve yaşam kapsamıyla ilgili?)
Çok teşekkürler, bkz MDC en explaination çok açıktır. – Darkthread
+1 yardım için teşekkürler, her testten önce reg.lastIndex = 0 ayarı problemimi çözdü. – bendewey
Bu, örneğin bir döngü içinde sorunlara neden oluyorsa, her bir testten önce lastIndex = 0 ayarlayacağınız görülüyor. – k0nG