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 exec() Methode von RegExp Instanzen führt eine Suche mit diesem regulären Ausdruck in einem angegebenen String durch und gibt ein Ergebnis-Array oder null zurück.
Der String, gegen den der reguläre Ausdruck abgeglichen wird. Alle Werte werden in Strings umgewandelt, daher führt das Weglassen oder Übergeben von undefined dazu, dass exec() nach dem String "undefined" sucht, was selten gewünscht ist.
Wenn der Abgleich fehlschlägt, gibt die exec() Methode null zurück und setzt den lastIndex des Regex auf 0.
Bei erfolgreichem Abgleich gibt die exec() Methode ein Array zurück und aktualisiert die lastIndex Eigenschaft des Regulären Ausdrucksobjekts. Das zurückgegebene Array enthält den abgeglichenen Text als erstes Element und dann ein Element für jede erfasste Gruppe des abgeglichenen Textes. Das Array hat außerdem die folgenden zusätzlichen Eigenschaften:
indexDer 0-basierte Index des Abgleichs im String.
inputDer Original-String, der abgeglichen wurde.
groupsEin null-Prototyp-Objekt von benannten Erfassungsgruppen, deren Schlüssel die Namen und deren Werte die Erfassungsgruppen sind, oder undefined, wenn keine benannten Erfassungsgruppen definiert wurden. Siehe Erfassungsgruppen für weitere Informationen.
indices OptionalDiese Eigenschaft ist nur vorhanden, wenn das d Flag gesetzt ist. Es ist ein Array, in dem jeder Eintrag die Grenzen eines Teilstring-Abgleichs darstellt. Der Index jedes Elements in diesem Array entspricht dem Index des jeweiligen Teilstring-Abgleichs im von exec() zurückgegebenen Array. Mit anderen Worten, der erste indices Eintrag repräsentiert den gesamten Abgleich, der zweite indices Eintrag die erste Erfassungsgruppe, usw. Jeder Eintrag selbst ist ein Zwei-Elemente-Array, wobei die erste Zahl den Startindex des Abgleichs und die zweite Zahl dessen Endindex repräsentiert.
Das indices Array hat zusätzlich eine groups Eigenschaft, die ein null-Prototyp-Objekt von allen benannten Erfassungsgruppen enthält. Die Schlüssel sind die Namen der Erfassungsgruppen und jeder Wert ist ein Zwei-Elemente-Array, wobei die erste Zahl den Startindex und die zweite Zahl den Endindex der Erfassungsgruppe darstellt. Wenn der reguläre Ausdruck keine benannten Erfassungsgruppen enthält, ist groups undefined.
JavaScript RegExp Objekte sind zustandsbehaftet, wenn die global oder sticky Flags gesetzt sind (z.B. /foo/g oder /foo/y). Sie speichern einen lastIndex aus dem vorherigen Abgleich. exec() kann intern verwendet werden, um über mehrere Abgleiche in einem Textstring zu iterieren (mit Erfassungsgruppen), im Gegensatz dazu, nur die übereinstimmenden Strings mit String.prototype.match() zu erhalten.
Wenn exec() verwendet wird, hat das globale Flag keine Auswirkung, wenn das Sticky-Flag gesetzt ist — der Abgleich ist immer sticky.
exec() ist die primitive Methode von Regexps. Viele andere Regex-Methoden rufen intern exec() auf — einschließlich derjenigen, die von String-Methoden aufgerufen werden, wie [Symbol.replace](). Während exec() selbst mächtig ist (und am effizientesten), vermittelt es oft nicht am deutlichsten die Absicht.
exec() ist nützlich für komplexe Operationen, die nicht leicht mit einer der oben genannten Methoden erreicht werden können, oft wenn Sie lastIndex manuell anpassen müssen. (String.prototype.matchAll() kopiert den Regex, daher beeinflusst das Ändern von lastIndex während der Iteration über matchAll die Iteration nicht.) Für ein solches Beispiel siehe rewinding lastIndex.
Betrachten Sie folgendes Beispiel:
Die folgende Tabelle zeigt den Zustand von result nach dem Ausführen dieses Skripts:
| [0] | "Quick Brown Fox Jumps" |
| [1] | "Brown" |
| [2] | "Jumps" |
| index | 4 |
| indices | [[4, 25], [10, 15], [20, 25]] groups: { color: [10, 15 ]} |
| input | "The Quick Brown Fox Jumps Over The Lazy Dog" |
| groups | { color: "Brown" } |
Zusätzlich wird re.lastIndex auf 25 gesetzt, da dieser Regex global ist.
Wenn Ihr regulärer Ausdruck das g Flag verwendet, können Sie die Methode exec() mehrmals ausführen, um aufeinanderfolgende Abgleiche im selben String zu finden. In diesem Fall beginnt die Suche an dem Teilstring von str, der durch die lastIndex Eigenschaft des regulären Ausdrucks angegeben wird (test() wird auch die lastIndex Eigenschaft voranbringen). Beachten Sie, dass die lastIndex Eigenschaft nicht zurückgesetzt wird, wenn ein anderer String durchsucht wird; die Suche beginnt bei ihrem bestehenden lastIndex.
Zum Beispiel, nehmen Sie folgendes Skript an:
Dieses Skript zeigt den folgenden Text an:
Found abb. Next match starts at 3 Found ab. Next match starts at 9Warnung: Es gibt viele Fallstricke, die dazu führen können, dass dies zu einer Endlosschleife wird!
Sie können diese Art von Code normalerweise durch String.prototype.matchAll() ersetzen, um ihn weniger fehleranfällig zu machen.
Sie können exec() auch verwenden, ohne explizit ein RegExp Objekt zu erstellen:
Dies wird eine Nachricht mit 'hello world!' protokollieren.
| ECMAScript® 2027 Language Specification # sec-regexp.prototype.exec |
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.