Por favor, eche un vistazo al siguiente JavaScript. Le he quitado cosas, así que puedes enfocarte en la esencia del problema.Chrome V8 Bug? Función Actuar diferente después de haber sido llamado por segunda vez
Notarás que llamo a la función prepPath dos veces seguidas, pasando exactamente la misma cadena. En Firefox e IE8, esta función alerta verdad cada vez (como se esperaba). Pero, en Chromium 5.0.375.127 (55887) Ubuntu 10.04, la función devuelve verdadero la primera vez, y la segunda llamada es falsa, a pesar de que la entrada permanece exactamente igual.
<script type="text/javascript">
function prepPath(str)
{
var regX = /[^\s/"'\\].*[^\s/"'\\]/g;
if(regX.test(str))
{
alert("true: " + str);
}
else
{
alert("false; " + str);
}
}
prepPath("/desktop"); // alerts: true
prepPath("/desktop"); // alerts: false
</script>
¿Por qué está volviendo falso la segunda vez en Chromium?
La única vez que necesita el indicador 'g' en una expresión regular es si desea usar la misma expresión más de una vez, con el último índice marcado entre usos. Sin la bandera 'g', su código funciona de la manera que usted esperaría. Si establece regX.lastIndex = 0 después de definirlo, también devolverá el valor esperado. – kennebec