Ho scritto un test RegExp Javascript per rilevare il formato di stringa di data, ho aggiunto per errore un flag "g" ridondante e ho trovato qualcosa di interessante.Test interessante di 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));
ho avuto un 'vero' seguita da un 'falso', poi un altro 'vero', poi un altro 'false'.
Se utilizzo un loop per eseguirlo, ho trovato qualcosa di più interessante, ho ottenuto quattro "true" in IE e Safari e true, false, true, false in 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));
}
Qualcuno ha idea di spiegare perché l'espressione regolare Javascript si comporta in quel modo e che cosa causa i browser restituire risultati diversi? (relativo alla dichiarazione delle variabili e al campo di applicazione?)
Grazie mille, spiegazione del MDC è molto chiaro. – Darkthread
+1 grazie per l'aiuto, impostando reg.lastIndex = 0 prima che ogni test risolvesse il mio problema. – bendewey
Sembra che tu possa impostare lastIndex = 0 prima di ogni test se questo causa problemi all'interno di un ciclo, ad esempio. – k0nG