Escribí una prueba Javascript RegExp para detectar el formato de cadena de fecha, agregué por error una bandera "g" redundante y encontré algo interesante.Prueba interesante de 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));
tengo un 'verdadero' seguido de un 'falso', y luego otro 'verdadero', y luego otro 'falso'.
Si uso un ciclo para ejecutarlo, encontré algo más interesante, obtuve cuatro "verdaderos" en IE y Safari, y verdadero, falso, verdadero, falso en 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));
}
¿Alguien tiene idea de explicar por qué la expresión regular Javascript se comporta de esa manera y lo que los navegadores causa devolver resultados diferentes? (relacionado con la declaración de variables y el alcance de la vida?)
Muchas gracias, explicación del MDC es muy clara. – Darkthread
+1 gracias por la ayuda, estableciendo reg.lastIndex = 0 antes de cada prueba resolvió mi problema. – bendewey
Parece que puede establecer lastIndex = 0 antes de cada prueba si esto está causando problemas dentro de un bucle, por ejemplo. – k0nG