Duplicar posibles:
Javascript regex returning true.. then false.. then true.. etc¿Por qué mi regex.test Javascript() alternando dar resultados
var r = /\d/g;
var a = r.test("1"); // will be true
var b = r.test("1"); // will be false
console.log(a == b); // will be false
favor explicarme por qué el resultado de r.test ("1 ") se alterna con cada llamada?
Pude solucionar el problema que estaba teniendo al eliminar el modificador g. Sin embargo, aún me gustaría entender por qué sucede esto.
gracias! Encontré algunos detalles adicionales que explican que .test es básicamente una abreviatura de .exec()! = Null, y es .exec() que almacena el lastIndex para la próxima llamada. (http://www.regular-expressions.info/javascript.html) Lo extraño es que incluso cuando se le asignan diferentes cadenas para cada llamada, ocurre lo mismo. ¿No se restablece el lastIndex si se invoca en una cadena diferente? –
No, porque 'lastIndex' es una propiedad de la expresión regular, no de la cadena. En Perl, por el contrario, está asociado con la cadena (la propiedad 'pos'), mientras que en Java lo mantiene el objeto Matcher. 'lastIndex' es una fuente de mucha frustración: http://blog.stevenlevithan.com/archives/fixing-javascript-regexp –