string.replace() – Zeichen suchen und ersetzen
replace() sucht und ersetzt Strings anhand eines Suchmusters (pattern). Der Original-String wird nicht verändert, sondern replace() gibt das Ergebnis der Ersetzung zurück. Der Suchstring kann ein einfacher String, ein regulärer Ausdruck oder eine Funktion sein.
String einfach ersetzen
In der einfachsten Variante sucht replace(a,b) einen Zeichenfolge a in einem String und ersetzt ihn durch die Zeichenfolge b. Der Original-String bleibt erhalten und der Rückgabewert enthält den veränderten String.
let oldstring = "Ersetze a duch b";
let newstring = oldstring.replace("a","b");
Freitags findet kein Nähkurs statt, aber Samstags gibt es gleich zwei Nähkurse.
const target = document.querySelector(".rep1");
target.textContent = target.textContent.replace("Nähkurs", "WordPress-Kurs");
ersetzt das erste Vorkommen von »Nähkurs« im String.
Regulärer Ausdruck: Ersetzen überall im String
Reguläre Ausdrücke stehen nicht in Hochkommas, sondern in Schrägstrichen: /Nähkurs/. Sie können durch die Modifier g und i erweitert werden.
- Ein g (für global) hinter dem schließenden Schrägstrich durchsucht und ersetzt alle Vorkommen des Suchmusters.
- Das i (case insensitiv) hinter dem schließenden Schrägstrich hebt den Unterschied zwischen Groß- und Kleinbuchstaben auf.
Freitags findet kein Nähkurs statt, aber Samstags gibt es gleich zwei nähkurse.
const button = document.querySelector("#repAll");
const target = document.querySelector(".repAll");
button.addEventListener("click", () => {
target.textContent = target.textContent.replace(/Nähkurs/gi, "WordPress-Kurs");
});
Wenn ein regulärer Ausdruck lang und kompliziert wird, kann er direkt einer Variablen zuwiesen werden.
<text id="text4293"
y="340.26246"
x="9182.7002">…</text>
const button = document.querySelector("#zif");
const target = document.querySelector(".zif");
button.addEventListener("click", () => {
const regex = /[0-9]+\.\d{4,}/g;
target.textContent = target.textContent.replace(regex, "***");
});
replaceAll – Alles ersetzen ohne regulären Ausdruck
Wenn alle Vorkommen der Zeichenkette a durch b ersetzt werden sollen oder Groß- und Kleinschreibung eine Rolle spielen, ist replaceAll die einfachere Lösung.
replaceAll ist mit ES2021 hinzugekommen und erspart uns die Abgründe der regulären Ausdrücke.
const tor = "Ein Torwart namens Torsten steht im Fußballtor";
const torReplaced = tor.replaceAll("Tor", "Tür");
console.log(torReplaced); // Ein Türwart namens Türsten steht im Fußballtor
sting.replace $1 Beispiel
Noch wirkungsvoller sind reguläre Ausdrücke beim Suchen und Ersetzen, wenn ein Backreference (Rückverweis) eingesetzt wird. Ein Backreference in regulären Ausdrücken ist eine besondere Variable, die automatisch zum Speicher eines Ausdrucks in runden Klammern wird.
replace Zahlen mit Sternchen
"abc123".replace(/([a-z]+)(\d+)/, "$1***")
SVG-Attribute manipulieren: Ersetzt die Nachkommastellen
const svg = `x="9182.7002" y="340.26246"`; const result = svg.replace( /(x|y)="(\d+)\.\d+"/g, '$1="$2"' ); console.log(result);
- (\d+) ist die Zahl vor dem Punkt
- $1 Attributname
- $2 Ganzzahliger Teil
Datum umdrehen mit string.replace() und Backreference
const text = "Heute ist der 23.02.2026.";
const result = text.replace(
/(\d{2})\.(\d{2})\.(\d{4})/,
"$3-$2-$1"
);
console.log(result);
Klammern ersetzen
Klammern rund um ein Wort oder einen Begriff entfernen bzw. ersetzen:
const el = document.querySelector("#repit");
el.innerHTML = el.innerHTML.replace(
/\[\[([^\]]+)\]\]/g,
"<dfn class='foo'>$1</dfn>"
);
Heute und an allen <dfn class='foo'>anderen und folgenden</dfn> Tagen
Eckige Klammern müssen außerhalb einer Zeichenklasse nicht escaped werden, denn sie gehören nicht zu den Sonderzeichen.
[^\][]+ verbietet die Klammern, am Ende das /g für global nicht vergessen!
Strings tauschen mit replace
Nähkurse finden immer Donnerstags, Wordpress-Kurse immer Montags statt.
$1 $2 $3
| | |
let regex = /(Nähkurse)(.*)(WordPress-Kurse)/i;
let result = swap.replace(regex,"$3 $2 $1");
Der Ersetzungs-String tauscht die Postion der Fundstellen.
Platzhalter ersetzen
In Templates werden häufig doppelte Klammern als Platzhalter verwendet.
const template = "Hallo {{name}}, willkommen in {{city}}!";
const data = { name: "Sarah", city: "Köln" };
console.log(template.replace(/{{(.*?)}}/g, (_, key) => data[key] || ""));
| Technik | Vorteil |
|---|---|
replace("old", "new") |
Ersetzt nur das erste Vorkommen |
replaceAll("old", "new") |
Ersetzt alle Vorkommen (ab ES2021) |
replace(/old/g, "new") |
Alternative für ältere Browser |
replace(/old/, callback) |
Dynamisches Ersetzen |
replace(/{{key}}/g, callback) |
Template-Strings ersetzen |