Eine Liste der Fallstricke beim regulären JS-Matching

Eine Liste der Fallstricke beim regulären JS-Matching

Ich habe vor Kurzem eine Falle bei der regulären Ausdrucksübereinstimmung in JS entdeckt und sie war damals so seltsam, dass ich sogar vermutete, dass etwas Paranormales vor sich ging.

Nachfolgend der Boxencode

   var str=["Teil1","Teil2","Teil3","Teil4","Teil5"]
        var reg = neuer RegExp ("g", "g");
        für(var i=0;i<str.length;i++){
            wenn(reg.test(str[i])){
                Konsole.log(str[i])
            }
        }

Ich verwende reguläre Ausdrücke, um str global abzugleichen, und drucke es aus, wenn es erfüllt ist, also bekomme ich dies

Zwei fehlen ohne ersichtlichen Grund, über sie werde ich gesondert urteilen.

      var str=["Teil1","Teil2","Teil3","Teil4","Teil5"]
        var reg = neuer RegExp ("g", "g");
        für(var i=0;i<str.length;i++){
            wenn(reg.test(str[i])){
                Konsole.log(str[i])
            }
            wenn(i==1){
                Konsole.log(reg.test(str[i]))
            }
            wenn(i==4){
                Konsole.log(reg.test(str[i]))
            }
        }

Also habe ich das

Es fehlt noch einer, aber ich sehe, dass die beiden fehlenden die Regelmäßigkeitsprüfung bestehen. Dann habe ich im Internet die folgende Passage gefunden:

Wenn eine Zeichenfolge in einem regulären Ausdruck erfolgreich abgeglichen wird, wird lastIndex auf die Position der ersten übereinstimmenden Zeichenfolge als Ausgangspunkt für die nächste Suche nach der globalen Zeichenfolgenübereinstimmung gesetzt. Wenn nachfolgende Felder erfolgreich abgeglichen werden können, wird lastIndex wiederholt neu zugewiesen, bis die Übereinstimmung fehlschlägt, und auf 0 zurückgesetzt.

Aber ich fragte meinen Lehrer und er sagte mir, dass nach dem Finden der Übereinstimmung lastIndex+1 zurückgegeben wird. Das heißt, als ich zum ersten Mal eine Übereinstimmung fand, war lastIndex 2. Diese 2 ist der Index in der Zeichenfolge, nicht der Index des Arrays. Daher beginnt die Beurteilung von str[1] mit dem Zeichenfolgenindex 2 und nicht mit 0. Daher ist die zweite Beurteilung falsch und die Übereinstimmung schlägt fehl. LastIndex wird auf 0 gesetzt, sodass die dritte Übereinstimmung erfolgreich sein kann.

Nachdem das Beurteilungsergebnis wahr ist, wird lastIndex auf 0 gesetzt, sodass die Daten normal sind.

Die Daten sind normal.

Zusammenfassen

Wenn ein globales Matching verwendet wird, wird lastIndex nach jeder Suche auf Null gesetzt, oder es wird kein globales Matching verwendet und es kann ein direktes Matching durchgeführt werden.

Hier ist eine Zusammenfassung der Internetnutzer:

lastIndex bedeutet wörtlich den letzten Index. Tatsächlich ist damit die Indexposition gemeint, an der der reguläre Ausdruck die nächste Suche startet. Beim ersten Mal ist es immer 0. Wenn die erste Suche abgeschlossen ist, wird der Wert von lastIndex auf die Indexposition des letzten Zeichens der übereinstimmenden Zeichenfolge plus 1 gesetzt. Die zweite Suche beginnt an der Position lastIndex und so weiter. Falls nicht gefunden, wird lastIndex auf 0 zurückgesetzt. Es ist zu beachten, dass das Attribut lastIndex nur in einem regulären Ausdruck mit einem globalen Flag funktioniert. Wenn wir das Flag g aus dem regulären Ausdruck im obigen Code entfernen, sind alle drei Popups wahr.

Freunde in Not können sich darauf beziehen. Dies ist das Ende dieses Artikels über eine Aufzeichnung der Fallstricke bei regulären JS-Matching-Problemen. Weitere relevante Fallstricke bei regulären JS-Matching-Problemen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • js regulärer Ausdruck Lernhinweise: passende Zeichenfolgen
  • Das reguläre passende Passwort darf nur eine Kombination aus Zahlen und Buchstaben sein [PHP- und JS-Implementierung]
  • String-String-Matching Javascript regulärer Ausdruck
  • Regelmäßige JS-Lernhinweise: passende Zeichenfolgenliterale
  • JavaScript-regulärer Ausdruck, der Zeichenfolgenliterale abgleicht
  • Regelmäßige JS-Lernhinweise: Optimierung passender Zeichenfolgenliterale

<<:  MySQL-Wissenspunkte und häufig verwendete MySQL-Befehle für die Computerprüfung der zweiten Ebene

>>:  Detaillierte Erläuterung der drei Möglichkeiten zum Schneiden von Catalina.out-Protokollen in Tomcat

Artikel empfehlen

Schleifenmethoden und verschiedene Durchlaufmethoden in js

Inhaltsverzeichnis for-Schleife While-Schleife do...

Detaillierte Schritte zur Verwendung von Arthas in einem Docker-Container

Was kann Arthas für Sie tun? Arthas ist das Open-...

Einige Einstellungen von Div bezüglich Rahmen und Transparenz

rahmen: Stil = „Rahmenstil: durchgezogen; Rahmenbr...

MySQL-Startfehler InnoDB: Sperren nicht möglich/ibdata1-Fehler

Beim Starten von MySQL in einer OS X-Umgebung wir...

So installieren Sie MySQL für Anfänger (erwiesenermaßen effektiv)

1. Software-Download MySQL-Download und -Installa...

Fehler MySQL-Tabelle 'performance_schema...Lösung

Die Testumgebung ist mit MariaDB 5.7 eingerichtet...

Das vergessene Button-Tag

Hinweis: Dieser Artikel wurde von jemand anderem ü...

Docker-Grundlagen

Vorwort: Docker ist eine Open-Source-Anwendungsco...

JavaScript implementiert eine einzelne verknüpfte Listenprozessanalyse

Vorwort: Zum Speichern mehrerer Elemente sind Arr...