Direkt zum Hauptinhalt springen
eLearner.app
Modul 7 · Lektion 2 von 426/32 im Kurs~10 min
Lektionen des Moduls (2/4)

Einfache Ersetzung und `$1`

In JavaScript führt String.prototype.replace(regex, replacement) einen Musterabgleich durch und ersetzt jeden Treffer durch den angegebenen String. Mit dem g-Flag werden alle Treffer ersetzt; ohne dieses nur der erste. replaceAll erzwingt das globale Verhalten (und erfordert das g-Flag in der Regex).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

Referenzen im Ersetzungs-String

Innerhalb des Ersetzungs-Strings sind folgende Angaben speziell:

  • $1, $2, … -- Rückwärtsreferenz auf die nummerierte Gruppe der Regex.
  • $<name> -- Rückwärtsreferenz auf die benannte Gruppe.
  • $& -- der gesamte Treffer.
  • `$`` -- Text vor dem Treffer.
  • $' -- Text nach dem Treffer.
  • $$ -- ein einzelnes literales $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Formatiere das Datum neu, indem du die Reihenfolge umkehrst. Die Regex hat 3 Gruppen, und im Ersetzungs-String verweist du als $1, $2, $3 auf sie.

Besondere Referenzen bei Ersetzungen

Zusätzlich zu $1 und $2 kannst du $& verwenden, um den gesamten gematchten Text einzufügen, $\`` für den gesamten Text vor dem Match und $'` für den gesamten Text danach. Dies ermöglicht komplexe Ersetzungen, selbst ohne JS-Code zu schreiben.

Probiere es aus

Übung#regex.m7.l2.e1
Versuche: 0Wird geladen…

Finde jedes Datum im Format JJJJ-MM-TT mit drei Gruppen (Jahr, Monat, Tag). Auf diese Weise könntest du replace verwenden, um TT/MM/JJJJ zu erhalten.

Editor wird geladen…
Hinweis anzeigen

Ersetze \d+ durch \d{4}, \d{2}, \d{2} innerhalb von drei mit (...) erfassten Gruppen.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#regex.m7.l2.e2
Versuche: 0Wird geladen…

Finde 'Vorname Nachname' als zwei benannte Gruppen `nome` und `cognome`, sodass du es mit `$<cognome>, $<nome>` als `cognome, nome` umschreiben könntest.

Editor wird geladen…
Hinweis anzeigen

Verwende (?<nome>\w+) und (?<cognome>\w+) getrennt durch \s+.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#regex.m7.l2.e3
Versuche: 0Wird geladen…

Erstelle ein Erfassungsmuster, um die Reihenfolge von Vor- und Nachname vom Format `Nachname, Vorname` in das Format `Vorname Nachname` umzukehren.

Editor wird geladen…
Hinweis anzeigen

Verwende zwei Erfassungsgruppen für Nach- und Vorname; die Ersetzung wird über $2 $1 durchgeführt.

Lösung nach 3 Versuchen verfügbar