[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll [Back]  [Original]

String.prototype.replaceAll() - JavaScript | MDN

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

View in English Always switch to English

String.prototype.replaceAll()

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit August 2020 browserbergreifend verfgbar.

Die replaceAll()-Methode von String-Werten gibt einen neuen String zurck, bei dem alle Vorkommen eines pattern durch einen replacement ersetzt werden. Das pattern kann ein String oder ein RegExp sein, und der replacement kann ein String oder eine Funktion sein, die fr jedes Vorkommen aufgerufen wird. Der ursprngliche String bleibt unverndert.

In diesem Artikel

Probieren Sie es aus

const paragraph = "This dog's name is just Dog! Yes, that is the name.";

console.log(paragraph.replaceAll("name", "nickname"));
// Expected output: "This dog's nickname is just Dog! Yes, that is the nickname."

console.log(paragraph.replaceAll(/\bis\b/g, "was"));
// Expected output: "This dog's name was just Dog! Yes, that was the name."

Syntax

js
replaceAll(pattern, replacement)

Parameter

pattern

Kann ein String oder ein Objekt mit einer Symbol.replace-Methode sein das typische Beispiel ist ein regulrer Ausdruck. Jeder Wert, der die Symbol.replace-Methode nicht hat, wird in einen String umgewandelt.

Wenn pattern ein Regex ist, muss er das globale (g)-Flag gesetzt haben, ansonsten wird ein TypeError ausgelst.

replacement

Kann ein String oder eine Funktion sein. Der Ersatz hat die gleiche Semantik wie der von String.prototype.replace().

Rckgabewert

Ein neuer String, bei dem alle Vorkommen eines Musters durch einen Ersatz ersetzt werden.

Ausnahmen

TypeError

Wird ausgelst, wenn das pattern ein Regex ist, das nicht das globale (g)-Flag gesetzt hat (dessen flags-Eigenschaft enthlt kein "g").

Beschreibung

Diese Methode verndert nicht den String-Wert, auf dem sie aufgerufen wird. Sie gibt einen neuen String zurck.

Im Gegensatz zu replace() ersetzt diese Methode alle Vorkommen eines Strings, nicht nur das erste. Whrend es auch mglich ist, replace() mit einem globalen Regex zu verwenden, das dynamisch mit RegExp() konstruiert wurde, um alle Instanzen eines Strings zu ersetzen, kann dies unbeabsichtigte Folgen haben, wenn der String spezielle Zeichen enthlt, die in regulren Ausdrcken eine Bedeutung haben (was passieren knnte, wenn der Ersatzstring von Benutzereingaben stammt). Whrend Sie diesen Fall abmildern knnen, indem Sie RegExp.escape() verwenden, um den regulren Ausdruck in ein literales Muster zu verwandeln, ist es einfacher, den String direkt an replaceAll() zu bergeben, ohne ihn in einen Regex 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 pattern ein Objekt mit einer Symbol.replace-Methode ist (einschlielich RegExp-Objekten), wird diese Methode mit dem Zielstring und replacement als Argumente aufgerufen. Ihr Rckgabewert wird zum Rckgabewert von replaceAll(). In diesem Fall ist das Verhalten von replaceAll() vollstndig durch die [Symbol.replace]()-Methode kodiert und hat daher dasselbe Ergebnis wie replace() (abgesehen von der zustzlichen Eingabevalidierung, dass der Regex global ist).

Wenn das pattern ein leerer String ist, wird der Ersatz zwischen jedes UTF-16-Code-Unit eingefgt, hnlich dem Verhalten von split().

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

Fr mehr Informationen darber, wie Regex-Eigenschaften (insbesondere das sticky-Flag) mit replaceAll() interagieren, siehe RegExp.prototype[Symbol.replace]().

Beispiele

Verwendung von replaceAll()

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

Nicht-globaler Regex wirft Fehler

Bei Verwendung eines regulren Ausdrucks als Suchwert muss er global sein. Das funktioniert nicht:

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

Das wird funktionieren:

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

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-string.prototype.replaceall

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page