NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Datum-Regex-Go-Validator

Datum-Regex-Go-Validator

Validieren Sie Datumsangaben in Formaten wie YYYY-MM-DD, DD/MM/YYYY oder MM-DD-YYYY mit dem Go-Regex-Datum-Validator. Ideal für Formulareingaben, Logs und Berichte. Testen Sie Ihre Muster mit dem Go-Regex-Tester und kombinieren Sie ihn mit Tools wie dem E-Mail-Regex, dem Telefonnummer-Regex und dem Passwort-Validator für eine vollständige Datenvalidierungslösung.

Datum-Regex-Go-Validator, Dokumentation

Einführung: Was ist Datum-Regex?

Die Validierung von Datumsstrings ist unerlässlich, wenn Sie mit Logs, Benutzerformularen, Berichten oder strukturierten Eingaben in Ihrer Go-Anwendung arbeiten. Mit regex sicherzustellen, dass Benutzer Daten im richtigen Format eingeben, bevor sie gespeichert oder verarbeitet werden, ist eine bewährte erste Verteidigungslinie.

In Go eignet sich die regex-basierte Validierung gut für grundlegende Prüfungen, zum Beispiel die Format-Erkennung für:

  • YYYY-MM-DD (ISO-Format)

  • DD/MM/YYYY (in Indien und Europa weit verbreitet)

  • MM-DD-YYYY (in den USA üblich)

In der Praxis können Datumsformate vielfältig sein. Neben Schrägstrichen und Bindestrichen begegnen Ihnen manchmal Punkte (z. B. 12.31.2024), Angaben ohne führende Nullen (1/2/2024 statt 01/02/2024) oder zweistellige Jahreszahlen (12/31/24). Diese Varianten treten besonders häufig auf, wenn Nutzer Daten aus verschiedenen Quellen einfügen oder wenn Daten aus internationalen Systemen stammen.

Um ein wirklich robustes regex-Muster zu erstellen, sollten Sie diese regionalen Besonderheiten berücksichtigen: Bindestriche, Schrägstriche, Punkte, einstellige Tages- und Monatsangaben sowie zwei- und vierstellige Jahreszahlen.

Die Grundbausteine von Regex

Um Datumsangaben (oder beliebige Strings) mit regex zu validieren, sollten Sie die wichtigsten Bausteine kennen:

  • A-Z: Großbuchstaben

  • a-z: Kleinbuchstaben

  • 0-9: Ziffern

  • \.: ein wörtlicher Punkt

  • +: ein oder mehrere des Vorherigen

  • *: null oder mehrere des Vorherigen

  • ?: optional (null oder ein Vorkommen)

  • ^: Anfang des Strings

  • $: Ende des Strings

Ein regulärer Ausdruck (regex) ist im Wesentlichen ein Suchmuster, das aus diesen Elementen aufgebaut wird. Metazeichen wie ^ und $ verankern den Treffer am Anfang oder Ende eines Strings, während Quantoren wie + und {n} bestimmen, wie oft ein Zeichen oder eine Gruppe erscheinen muss.

Datum-Regex-Muster

ISO-Format (YYYY-MM-DD)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
  • Treffer: 2024-12-31

  • Abgelehnt: 2024-13-01, 2024-02-30

Dies ist das Standardformat, das in den meisten APIs und Datenbanken verwendet wird. Es stellt sicher, dass das Jahr vier Stellen hat, der Monat zwischen 01 und 12 liegt und der Tag für seinen Monat gültig ist.

DD/MM/YYYY-Format

^(0[1-9]|[12]\d|3[01])/(0[1-9]|1[0-2])/\d{4}$
  • Treffer: 31/12/2024

  • Abgelehnt: 00/00/2024, 32/01/2024

Dieses Format ist in Indien und weiten Teilen Europas verbreitet. Das Muster erwartet führende Nullen und verwendet einen Schrägstrich als Trennzeichen.

MM-DD-YYYY-Format

^(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])-\d{4}$
  • Treffer: 12-31-2024

  • Abgelehnt: 13-01-2024, 00-15-2022

In den USA weit verbreitet. Das Muster verwendet einen Bindestrich als Trennzeichen und erwartet zwei Stellen für Monat und Tag.

Aufbau eines regex-Musters für MM/DD/YYYY

Für ein MM/DD/YYYY-Muster gehen Sie so vor:

  • Zweistelliger Monat: (0[1-9]|1[0-2]) stellt sicher, dass der Monat zwischen 01 und 12 liegt.

  • Trennzeichen: Verwenden Sie [/-] für Schrägstrich oder Bindestrich.

  • Zweistelliger Tag: (0[1-9]|[12]\d|3[01]) deckt 01 bis 31 ab.

  • Weiteres Trennzeichen: Erneut [/-].

  • Vierstelliges Jahr: \d{4} für das Jahr.

Das vollständige Muster:

^(0[1-9]|1[0-2])[/-](0[1-9]|[12]\d|3[01])[/-]\d{4}$
  • Treffer: 12/31/2024, 01-01-2023

  • Abgelehnt: 00/10/2024, 13/28/2024, 11-31-2024

Unterstützung weiterer gängiger Varianten

Datumsangaben kommen in vielen Formen vor. Trennzeichen können variieren: Bindestriche (-), Schrägstriche (/) oder Punkte (.). Bestimmte Regionen oder Legacy-Systeme akzeptieren Datumsangaben ohne führende Nullen (z. B. 7/5/24) oder mit zweistelligen Jahreszahlen (05/12/99). Für solche Fälle eignet sich folgendes Muster:

^\d{1,2}[/.-]\d{1,2}[/.-]\d{2,4}$
  • Erlaubt ein- oder zweistellige Tages- und Monatsangaben

  • Akzeptiert /, - oder . als Trennzeichen

  • Unterstützt zwei- und vierstellige Jahreszahlen

Datumsvalidierung mit regex in Go

Das folgende Go-Programm prüft, ob ein Datumsstring dem ISO-Format (YYYY-MM-DD) entspricht:

package main

import ( "fmt" "regexp" )

func isValidDate(date string) bool { // Regex für YYYY-MM-DD pattern := ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ regex := regexp.MustCompile(pattern) return regex.MatchString(date) }

func main() { dates := []string{"2025-01-30", "2025-13-01", "2024-02-30"} for _, date := range dates { fmt.Printf("Is '%s' valid? %t\n", date, isValidDate(date)) } }

Anwendungsfälle der Datumsvalidierung mit regex

  • Formulareingabe-Validierung: Prüfen Sie, ob Benutzer ihr Geburtsdatum oder einen Termin im richtigen Format eingegeben haben.

  • Datenbereinigung: Fehlerhafte Datumsangaben in großen CSV- oder JSON-Datensätzen identifizieren und entfernen.

  • Sicherheit: Datum-Injection oder fehlerhafte String-Exploits in APIs und Benutzerformularen verhindern.

  • Log-Filterung: Log-Einträge mit Datumsstrings analysieren.

Profi-Tipps

  • Verwenden Sie regex für die Format-Validierung, prüfen Sie jedoch zusätzlich, ob das Datum tatsächlich existiert (z. B. ist der 30. Februar ungültig).

  • Für Zeitstempel erweitern Sie das regex-Muster (z. B. ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$).

  • Testen Sie regex-Muster mit dem Go-Regex-Tester, bevor Sie sie in der Produktion einsetzen.

  • Für Massenvalidierung kombinieren Sie dieses Tool mit einem CSV-Cleaner oder JSON-Validator.

Tipps zur regex-Effizienz

  • Vermeiden Sie unnötige Zeichenklassen-Bereiche, halten Sie Muster schlank und gezielt.

  • Verwenden Sie nicht-erfassende Gruppen ((?:...)), wenn Klammern nur zur Gruppierung dienen.

  • Nutzen Sie possessive Quantoren oder atomare Gruppen, um unnötiges Backtracking zu verhindern.

Häufige Fallstricke

  • Fehlende führende Nullen bei Monaten oder Tagen erlauben.

  • Den Wertebereich für Monate und Tage nicht einzuschränken, sodass ungültige Werte akzeptiert werden.

  • Dass regex keine logisch unmöglichen Daten erkennt, zum Beispiel schlüpft der 30. Februar durch, sofern keine zusätzliche Prüfung erfolgt.

Datumsvalidierung in verschiedenen Programmiersprachen

  • JavaScript: Verwenden Sie die .test()-Methode des RegExp-Objekts:

    const datePattern = /^\d{4}-\d{2}-\d{2}$/;
    const isValid = datePattern.test("2024-01-28");
  • Python: Verwenden Sie das re-Modul mit re.fullmatch():

    import re
    pattern = r"\d{2}/\d{2}/\d{4}"
    is_valid = re.fullmatch(pattern, "28/01/2024") is not None
  • Go: Verwenden Sie regexp.MatchString():

    import "regexp"
    matched, _ := regexp.MatchString(^\d{2}-\d{2}-\d{4}$, "28-01-2024")
  • Java: Verwenden Sie Pattern und Matcher:

    Pattern pattern = Pattern.compile("\d{2}/\d{2}/\d{4}");
    Matcher matcher = pattern.matcher("28/01/2024");
    boolean isValid = matcher.matches();

Regex für Performance und Lesbarkeit optimieren

  • So einfach wie möglich halten: Wählen Sie das kürzeste Muster, das die Aufgabe erfüllt. Vermeiden Sie es, alle Randfälle in einem einzigen riesigen regex abzubilden.

  • Nicht-erfassende Gruppen bevorzugen: Verwenden Sie (?:...) für strukturelle Gruppierungen.

  • Backtracking vermeiden: Verwenden Sie Quantoren wie +, * oder {n,m} gezielt.

  • Testen und messen: Verwenden Sie Tools wie https://regex101.com/ oder den Go-Regex-Tester, um Engpässe zu erkennen.

  • Balance zwischen Strenge und Flexibilität: Entscheiden Sie frühzeitig, wie permissiv Ihr Muster sein soll.

Diese Tools kombinieren

Frequently Asked Questions

Prüft dieser Validator, ob das Datum real ist (z. B. 29. Feb. in Schaltjahren)?

Nein, regex prüft nur das Format. Die logische Validierung (z. B. ob das Datum tatsächlich existiert) muss mit Go's time.Parse() erfolgen.

Kann dieser Validator für Zeitstempel verwendet werden?

Das regex-Muster muss um den Zeitanteil erweitert werden. Regex kann sowohl Datums- als auch Zeitformate gemeinsam abgleichen.

Kann er zukünftige oder vergangene Daten prüfen?

Nein. Regex versteht keine Zeitbereiche, sondern nur Strukturen.

Unterstützt dies mehrere Formate gleichzeitig?

Sie können mehrere regex-Muster in einer Schleife verwenden, um verschiedene Formate zu testen.

Sollte ich regex oder Datum-Parser verwenden?

Verwenden Sie regex für schnelle, frontend-ähnliche Prüfungen. Für logisch komplexe Validierungen im echten Betrieb verwenden Sie time.Parse().

Testen Sie Ihre APIs noch heute!

Schreiben Sie auf Deutsch, Qodex verwandelt es in sichere, sofort ausführbare Tests.