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).
'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$.
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
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.
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
Finde 'Vorname Nachname' als zwei benannte Gruppen `nome` und `cognome`, sodass du es mit `$<cognome>, $<nome>` als `cognome, nome` umschreiben könntest.
Hinweis anzeigen
Verwende (?<nome>\w+) und (?<cognome>\w+) getrennt durch \s+.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Erstelle ein Erfassungsmuster, um die Reihenfolge von Vor- und Nachname vom Format `Nachname, Vorname` in das Format `Vorname Nachname` umzukehren.
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