Mögliche Duplizieren:
Javascript regex returning true.. then false.. then true.. etcwarum mein Javascript regex.test() geben abwechselnd Ergebnisse
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
mir bitte erklären, warum das Ergebnis r.test ("1 ") wechselt mit jedem Anruf?
Ich war in der Lage, das Problem zu umgehen, das ich hatte, indem ich den Modifikator g entfernte. Trotzdem würde ich gerne verstehen, warum das passiert.
danke! Ich habe einige weitere Details gefunden, die erklären, dass .test im Grunde eine Abkürzung für .exec()! = Null ist und es .exec() ist, das den lastIndex für den nächsten Aufruf speichert. (http://www.regular-expressions.info/javascript.html) Was seltsam ist, ist, dass selbst wenn verschiedene Strings für jeden Anruf gegeben werden, das gleiche auftritt. Wird der lastIndex nicht zurückgesetzt, wenn er in einer anderen Zeichenfolge aufgerufen wird? –
Nein, weil 'lastIndex' eine Eigenschaft der Regex ist, nicht die Zeichenfolge. In Perl dagegen ist es mit der Zeichenkette (der 'pos'-Eigenschaft) verknüpft, während es in Java durch das Matcher-Objekt verwaltet wird. 'lastIndex' ist eine Quelle großer Frustration: http://blog.stevenlevithan.com/archives/fixing-javascript-regexp –