Regex-Ersetzung: Text mit Erfassungsgruppen umstellen
Tausche Jahr, Monat und Tag, ohne sie neu zu tippen – und sieh, warum ein passendes Datum trotzdem ungültig sein kann.
Um 2026-10-15 in 15/10/2026 zu ändern, erfasse Jahr, Monat und Tag getrennt und setze diese Erfassungen dann in einer anderen Reihenfolge zusammen. Du musst nicht für jedes Datum einen neuen Ersatztext eingeben.
Dieses Beispiel ändert die Form des Textes. Es prüft nicht, ob jedes Datum existiert. Dieser Unterschied ist wichtig, wenn du das Ergebnis in einer Tabellenkalkulation verwendest oder veröffentlichst.
Beginne mit einer kleinen Stichprobe, einschließlich eines ungültigen Datums
Öffne den Regex-Playground und füge dies in Text testen ein:
Launch: 2026-10-15
Review: 2026-11-02
Invalid: 2026-99-99
Short: 2026-1-5
In Regulärer Ausdruck gibst du dieses Muster ohne Schrägstrich-Trennzeichen ein:
\b(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\b
Die drei benannten Gruppen erfassen vier Ziffern, zwei Ziffern und zwei Ziffern. Die Wortgrenzen verhindern, dass es innerhalb einer längeren Folge von Wortzeichen übereinstimmt, aber sie machen es nicht zu einem Kalender-Validator.
Unter Optionen lasse Alle Übereinstimmungen finden aktiviert. Das ist das g-Flag. Du solltest drei Übereinstimmungen sehen; der einstellige Monat und Tag in der letzten Zeile passen nicht zum Muster.
Ordne die Erfassungen im Ersatztext neu an
Wähle Ersetzen und gib Folgendes in Ersetzen mit ein. Auf einem Telefon öffne zuerst Ergebnisse, um zur Ersetzungsansicht zu gelangen.
$<day>/$<month>/$<year>
Die Ersetzungsvorschau sollte Folgendes anzeigen:
Launch: 15/10/2026
Review: 02/11/2026
Invalid: 99/99/2026
Short: 2026-1-5
Das ungültige Datum hat sich ebenfalls geändert. Ein Muster, das nur Ziffern zählt, kann die Anzahl der Tage in einem Monat nicht kennen. Verwende einen Datums-Parser, wenn die Kalendergültigkeit wichtig ist; verwende diese Ersetzung, wenn du bereits weißt, dass die Eingabedaten gültig sind und nur ein anderes Anzeigeformat benötigst.
Das Deaktivieren von Alle Übereinstimmungen finden ändert nur das erste Datum. Die Übereinstimmungsanzahl des Tools sinkt dann von drei auf eins. Wenn eine Ersetzung nach dem ersten Vorkommen zu stoppen scheint, überprüfe dieses Flag, bevor du das Muster neu schreibst.
Nummerierte Gruppen funktionieren auch
Für ein kürzeres Muster entferne die Namen:
\b(\d{4})-(\d{2})-(\d{2})\b
Verwende dann diese Ersetzung:
$3/$2/$1
Sie erzeugt für diese Stichprobe dieselbe Ausgabe. Gruppennummern folgen den öffnenden Erfassungsklammern von links nach rechts. Benannte Gruppen sind einfacher zu pflegen, wenn du erwartest, das Muster später zu bearbeiten.
Der Playground verwendet die JavaScript-Ersetzungssyntax. Im Ersetzungsfeld fügt $1 die erste Erfassung ein, $<year> die benannte Erfassung, $& die gesamte Übereinstimmung und $$ ein literales Dollarzeichen. MDNs Ersetzungsreferenz listet diese Formen auf. Andere Editoren und Regex-Engines können eine andere Ersetzungsnotation verwenden.
Behalte die Quelle und überprüfe die Ausnahmen
Lade die Beispieleingabe, die Ausgabe aller Übereinstimmungen und die Ausgabe nur der ersten Übereinstimmung herunter, um sie zu vergleichen. Die Einstellungsdatei bewahrt das Muster und die Ersetzung; doppelte Backslashes in diesem JSON sind String-Escaping, keine zusätzlichen Backslashes zum Einfügen in das Musterfeld.
Am 15. Oktober 2026 haben wir diese Beispiele mit derselben Bewertungsfunktion wie der Playground ausgeführt. Beide Erfassungsstile erzeugten identische Ausgaben; das Ausschalten des globalen Flags änderte eine Übereinstimmung, und das ungültige Datum stimmte immer noch überein. Der Ergebnisdatensatz enthält diese Prüfungen und die Hashes der Dateien.
Für einen echten Entwurf behalte eine unveränderte Kopie und füge einige Zeilen hinzu, die sich in deinem Test nicht ändern sollten. Eine plausibel aussehende Vorschau ist kein Beweis dafür, dass jede Ersetzung korrekt ist.