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 Methode [Symbol.replace]() von RegExp-Instanzen legt fest, wie String.prototype.replace() und String.prototype.replaceAll() funktionieren sollen, wenn der reguläre Ausdruck als Muster übergeben wird.
Ein String, der das Ziel des Ersetzens ist.
replacementKann ein String oder eine Funktion sein.
Ein neuer String, bei dem eines, einige oder alle Übereinstimmungen des Musters durch die angegebene Ersetzung ersetzt werden.
Diese Methode wird intern in String.prototype.replace() und String.prototype.replaceAll() aufgerufen, wenn das pattern-Argument ein RegExp-Objekt ist. So geben zum Beispiel die folgenden zwei Beispiele das gleiche Ergebnis zurück.
Wenn der Regex global ist (mit dem g-Flag), wird die Methode exec() des Regex wiederholt aufgerufen, bis exec() null zurückgibt. Andernfalls würde exec() nur einmal aufgerufen werden. Für jedes Ergebnis von exec() wird die Ersetzung basierend auf der Beschreibung in String.prototype.replace() vorbereitet.
Da [Symbol.replace]() exec() weiterhin aufrufen würde, bis es null zurückgibt, und exec() den lastIndex des Regex automatisch auf 0 zurücksetzt, wenn die letzte Übereinstimmung fehlschlägt, hätte [Symbol.replace]() typischerweise keine Nebeneffekte, wenn es beendet wird. Wenn der Regex jedoch haftend ist, aber nicht global, würde lastIndex nicht zurückgesetzt werden. In diesem Fall könnte jeder Aufruf von replace() ein anderes Ergebnis liefern.
Wenn der Regex haftend und global ist, würde er weiterhin haftende Übereinstimmungen durchführen — d.h. er würde keine Vorkommen jenseits des lastIndex übereinstimmen.
Wenn die aktuelle Übereinstimmung ein leerer String ist, würde der lastIndex trotzdem erhöht werden — wenn der Regex Unicode-bewusst ist, würde er um einen Unicode-Codepunkt erhöht; andernfalls wird er um eine UTF-16-Codeeinheit erhöht.
Diese Methode existiert, um das Ersetzungsverhalten in RegExp-Unterklassen anzupassen.
Diese Methode kann fast genauso wie String.prototype.replace() verwendet werden, mit Ausnahme der unterschiedlichen this-Objekte und der unterschiedlichen Argumentreihenfolge.
Unterklassen von RegExp können die Methode [Symbol.replace]() überschreiben, um das Standardverhalten zu verändern.
| ECMAScript® 2027 Language Specification # sec-regexp.prototype-%symbol.replace% |
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.