Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die lastIndex Dateneigenschaft einer RegExp-Instanz gibt den Index an, an dem die nächste Übereinstimmung beginnen soll.
Eine nicht-negative Ganzzahl.
| Schreibbar | ja |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Diese Eigenschaft wird nur gesetzt, wenn die RegExp-Instanz das g-Flag für eine globale Suche oder das y-Flag für eine klebrige Suche verwendet hat. Folgende Regeln gelten, wenn exec() auf einer bestimmten Eingabe aufgerufen wird:
Andere regex-bezogene Methoden wie RegExp.prototype.test(), String.prototype.match(), String.prototype.replace() usw. rufen exec() im Hintergrund auf und haben daher unterschiedliche Auswirkungen auf lastIndex. Siehe die entsprechenden Seiten für Details.
Betrachten Sie die folgende Befehlsequenz:
Übereinstimmungen mit dem leeren String.
Gibt ["hi", "hi"] zurück, mit lastIndex gleich 2.
Gibt ["", undefined] zurück, ein leeres Array, dessen nulltes Element der übereinstimmende String ist. In diesem Fall der leere String, da lastIndex 2 war (und immer noch 2 ist) und hi eine Länge von 2 hat.
Die lastIndex Eigenschaft ist beschreibbar. Sie können sie setzen, damit der Regex die nächste Suche an einem bestimmten Index beginnt.
Das y-Flag erfordert fast immer das Setzen von lastIndex. Es matcht immer genau bei lastIndex und versucht keine späteren Positionen. Dies ist normalerweise nützlich für das Schreiben von Parsern, wenn Sie Token nur an der aktuellen Position matchen möchten.
Das g-Flag profitiert ebenfalls vom Setzen von lastIndex. Ein häufiger Anwendungsfall ist, wenn der String während einer globalen Suche in der Mitte modifiziert wird. In diesem Fall könnten wir ein bestimmtes Match verpassen, wenn der String verkürzt wird. Wir können dies vermeiden, indem wir lastIndex zurückspulen.
Versuchen Sie, die Zeile mdLinkPattern.lastIndex += resolvedLink.length - originalLink.length zu löschen und das zweite Beispiel auszuführen. Sie werden feststellen, dass der zweite Link nicht korrekt ersetzt wird, da lastIndex nach der Verkürzung des Strings bereits über den Index des Links hinausgeht.
Warnung: Dieses Beispiel dient nur zur Veranschaulichung. Um mit Markdown umzugehen, sollten Sie wahrscheinlich eine Parsing-Bibliothek anstelle von Regex verwenden.
Sie können die Suche optimieren, indem Sie lastIndex an einen Punkt setzen, an dem frühere mögliche Vorkommen ignoriert werden können. Zum Beispiel, anstatt dies zu tun:
Betrachten Sie dies:
Dies ist potenziell leistungsfähiger, da wir das Zerteilen des Strings vermeiden.
Die Nebeneffekte, die durch exec() verursacht werden, können verwirrend sein, besonders wenn die Eingabe für jedes exec() unterschiedlich ist.
Dies ist noch verwirrender, wenn Sie lastIndex von Hand modifizieren. Um die Nebeneffekte einzudämmen, denken Sie daran, lastIndex nach jeder vollständig verarbeiteten Eingabe zurückzusetzen.
Mit etwas Abstraktion können Sie erfordern, dass lastIndex vor jedem exec()-Aufruf auf einen bestimmten Wert gesetzt wird.
| ECMAScript® 2027 Language Specification # sec-properties-of-regexp-instances |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.