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 Januar 2020 browserübergreifend verfügbar.
Die matchAll()-Methode von String-Werten gibt einen Iterator für alle Ergebnisse zurück, die dieser Zeichenkette mit einem regulären Ausdruck entsprechen, einschließlich Capturing-Gruppen.
Ein reguläres Ausdrucksobjekt oder ein beliebiges Objekt, das eine Symbol.matchAll-Methode hat.
Wenn regexp kein RegExp-Objekt ist und keine Symbol.matchAll-Methode hat, wird es implizit in ein RegExp umgewandelt, indem new RegExp(regexp, 'g') verwendet wird.
Wenn regexp ein Regex ist, dann muss es das globale (g)-Flag gesetzt haben, sonst wird ein TypeError ausgelöst.
Ein iterables Iterator-Objekt (das nicht neu gestartet werden kann) von Übereinstimmungen oder ein leerer Iterator, wenn keine Übereinstimmungen gefunden werden. Jeder vom Iterator zurückgegebene Wert ist ein Array mit derselben Form wie der Rückgabewert von RegExp.prototype.exec().
Wird ausgelöst, wenn das regexp ein Regex ist, das nicht das globale (g)-Flag gesetzt hat (seine flags-Eigenschaft enthält kein "g").
Die Implementierung von String.prototype.matchAll macht nicht viel mehr, als die Symbol.matchAll-Methode des Arguments mit der Zeichenkette als erstem Parameter aufzurufen (abgesehen von der zusätzlichen Eingabevalidierung, dass der Regex global ist). Die eigentliche Implementierung kommt von RegExp.prototype[Symbol.matchAll]().
Ohne matchAll() ist es möglich, Aufrufe von regexp.exec() (und Regexe mit dem g-Flag) in einer Schleife zu verwenden, um alle Übereinstimmungen zu erhalten:
Mit matchAll() können Sie die while-Schleife und exec mit g vermeiden. Stattdessen erhalten Sie einen Iterator, den Sie mit den bequemeren for...of, Array Spread oder Array.from()-Konstruktionen verwenden können:
matchAll wird eine Ausnahme auslösen, wenn das g-Flag fehlt.
matchAll erstellt intern eine Kopie des regexp — anders als bei regexp.exec() ändert sich lastIndex nicht, während die Zeichenkette durchsucht wird.
Dies bedeutet jedoch, dass Sie im Gegensatz zur Verwendung von regexp.exec() in einer Schleife lastIndex nicht ändern können, um das Regex vor- oder zurückzusetzen.
Ein weiterer überzeugender Grund für matchAll ist der verbesserte Zugang zu Capturing-Gruppen.
Capturing-Gruppen werden ignoriert, wenn match() mit dem globalen g-Flag verwendet wird:
Mit matchAll können Sie leicht auf Capturing-Gruppen zugreifen:
Wenn ein Objekt eine Symbol.matchAll-Methode hat, kann es als benutzerdefinierter Matcher verwendet werden. Der Rückgabewert von Symbol.matchAll wird zum Rückgabewert von matchAll().
| ECMAScript® 2027 Language Specification # sec-string.prototype.matchall |
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.