Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. String
  6. replaceAll()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

String.prototype.replaceAll()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨August 2020⁩.

Die MethodereplaceAll() vonString-Werten gibt einen neuen String zurück, bei dem alle Vorkommen einespattern durch einreplacement ersetzt werden. Daspattern kann ein String oder einRegExp sein, und dasreplacement kann ein String oder eine Funktion sein, die für jedes Vorkommen aufgerufen wird. Der ursprüngliche String bleibt unverändert.

Probieren Sie es aus

const paragraph = "I think Ruth's dog is cuter than your dog!";console.log(paragraph.replaceAll("dog", "monkey"));// Expected output: "I think Ruth's monkey is cuter than your monkey!"// Global flag required when calling replaceAll with regexconst regex = /dog/gi;console.log(paragraph.replaceAll(regex, "ferret"));// Expected output: "I think Ruth's ferret is cuter than your ferret!"

Syntax

js
replaceAll(pattern, replacement)

Parameter

pattern

Kann ein String oder ein Objekt mit einerSymbol.replace Methode sein — das typische Beispiel ist einregulärer Ausdruck. Jeder Wert, der nicht über dieSymbol.replace Methode verfügt, wird in einen String umgewandelt.

Fallspatternein regulärer Ausdruck ist, muss dieser das globale (g) Flag gesetzt haben, oder es wird einTypeError ausgelöst.

replacement

Kann ein String oder eine Funktion sein. Das Ersatzverhalten hat die gleichen Semantiken wie beiString.prototype.replace().

Rückgabewert

Ein neuer String, bei dem alle Vorkommen eines Musters durch eine Ersetzung ersetzt wurden.

Ausnahmen

TypeError

Wird ausgelöst, wenn daspatternein regulärer Ausdruck ist, der nicht das globale (g) Flag gesetzt hat (dessenflags Eigenschaft enthält kein"g").

Beschreibung

Diese Methode verändert nicht den String-Wert, auf den sie angewendet wird. Sie gibt einen neuen String zurück.

Im Gegensatz zureplace() ersetzt diese Methode alle Vorkommen eines Strings, nicht nur das erste. Obwohl es auch möglich ist,replace() mit einem dynamisch erzeugten globalen regulären Ausdruck mitRegExp() zu verwenden, um alle Instanzen eines Strings zu ersetzen, kann dies unbeabsichtigte Folgen haben, wenn der String Sonderzeichen enthält, die in regulären Ausdrücken eine Bedeutung haben (was passieren kann, wenn der Ersetzungsstring von Benutzereingaben stammt). Während Sie diesen Fall durch die Verwendung vonRegExp.escape() entschärfen können, um die reguläre Ausdruckzeichenkette in ein literal pattern umzuwandeln, ist es einfacher, den String direkt anreplaceAll() zu übergeben, ohne ihn in einen regulären Ausdruck umzuwandeln.

js
function unsafeRedactName(text, name) {  return text.replace(new RegExp(name, "g"), "[REDACTED]");}function semiSafeRedactName(text, name) {  return text.replaceAll(name, "[REDACTED]");}function superSafeRedactName(text, name) {  // only match at word boundaries  return text.replaceAll(    new RegExp(`\\b${RegExp.escape(name)}\\b`, "g"),    "[REDACTED]",  );}let report =  "A hacker called ha.*er used special characters in their name to breach the system.";console.log(unsafeRedactName(report, "ha.*er")); // "A [REDACTED]s in their name to breach the system."console.log(semiSafeRedactName(report, "ha.*er")); // "A hacker called [REDACTED] used special characters in their name to breach the system."report = "A hacker called acke breached the system.";console.log(semiSafeRedactName(report, "acke")); // "A h[REDACTED]r called [REDACTED] breached the system."console.log(superSafeRedactName(report, "acke")); // "A hacker called [REDACTED] breached the system."

Wenn daspattern ein Objekt mit einerSymbol.replace Methode ist (einschließlichRegExp Objekten), wird diese Methode mit dem Zielstring undreplacement als Argumente aufgerufen. Der Rückgabewert wird der Rückgabewert vonreplaceAll(). In diesem Fall wird das Verhalten vonreplaceAll() vollständig von der[Symbol.replace]() Methode kodiert und hat somit das gleiche Ergebnis wiereplace() (abgesehen von der zusätzlichen Eingabevalidierung, dass der reguläre Ausdruck global ist).

Wenn daspattern ein leerer String ist, wird das Ersatzmuster zwischen jedem UTF-16-Code-Einheit eingefügt, ähnlich dem Verhalten vonsplit().

js
"xxx".replaceAll("", "_"); // "_x_x_x_"

Weitere Informationen darüber, wie Regex-Eigenschaften (insbesondere dassticky Flag) mitreplaceAll() interagieren, finden Sie unterRegExp.prototype[Symbol.replace]().

Beispiele

Verwendung von replaceAll()

js
"aabbcc".replaceAll("b", ".");// 'aa..cc'

Nicht-globale Regex wirft einen Fehler

Bei der Verwendung eines regulären Ausdrucks als Suchwert muss dieser global sein. Das wird nicht funktionieren:

js
"aabbcc".replaceAll(/b/, ".");// TypeError: replaceAll must be called with a global RegExp

Das wird funktionieren:

js
"aabbcc".replaceAll(/b/g, ".");("aa..cc");

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.replaceall

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp