Mögliche Duplizieren:
Interesting test of Javascript RegExp
Regular expression test can't decide between true and false (JavaScript)Warum verhält sich dieselbe RegExp anders?
Example of issue. Wenn ich inline lief, waren die Ergebnisse wie erwartet. Wenn es jedoch als Variable gespeichert wird, überspringt es das Element der mittleren Spannweite.
// Inline RegExp
function getToggleClasses() {
var toggler = [],
elements = document.getElementsByTagName("*"),
i=0,
len = elements.length;
for (i; i < len; i++) {
if (/toggler/g.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}
// Variable
function getToggleClasses2() {
var toggler = [],
elements = document.getElementsByTagName("*"),
tester = /toggler/g,
i=0,
len = elements.length;
for (i; i < len; i++) {
if (tester.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Variable: " + toggler.length;
}
Mark up:
<span class="toggler">A</span>
<span class="toggler">B</span>
<span class="toggler">C</span>
Gegeben: ich es verstehe, ist kein Grund, eine RegExp zu verwenden, um diesen Vergleich zu tun und ich verstehe auch, wie groß Bibliotheken wie jQuery sind. Ich weiß auch, dass die g
in diesem Fall nicht benötigt wird.
Ich kann nicht verstehen, warum diese beiden Methoden jemals unterschiedliche Ergebnisse zurückgeben sollten.
Dies ist nur eine persönliche Vorliebe, aber ich denke, es würde die Klarheit ein wenig verbessern, um Klammern um ein Regex-Literal zu setzen, das Flags hat, wenn eine Funktion auf dem Literal aufgerufen wird. – JAB
@apsillers, Sie sind richtig. Was hast du gesucht, um diese zu finden? Ich konnte nicht herausfinden, was ich suchen sollte, um die Ergebnisse zu erhalten, nach denen ich suchte. – Joe
Ich habe ein bisschen geschummelt und nach '[javascript] regex test lastindex' gesucht - ich war ziemlich sicher, dass eine Frage wie diese schon einmal gestellt wurde und ich wusste, dass die Antwort den Text' lastIndex' enthalten würde. Dies ist ein guter Fall, der zeigt, dass die Existenz einer doppelten Frage nicht notwendigerweise ein Hinweis darauf ist, dass der Fragesteller nachlässig war; Sie haben eine gut formulierte Frage für ein schwierig zu suchendes Problem gestellt. – apsillers