• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

RegEx - Hilfe

Status
Für weitere Antworten geschlossen.

sveka

Mitglied
Hallo,

ich nutze einen Onlineterminkalender. Bei diesem kann ich Formularfelder definieren und kann Überprüfungen nur per RegEx vornehmen. Jetzt wollte ich ein RegEx, was nur erlaubt ein Datum im Format dd.mm.YYYY einzugeben. Dafür habe ich dieses hier zusammengebastelt.

^(0?[1-9]|[12][0-9]|3[01])[\.](0?[1-9]|1[012])[\.]\d{4}$

Kann mal jemand bitte schauen ob das so korrekt wäre?
 
Werbung:
Werbung:
Code:
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Der ist etwas genauer und unterstützt neben . als Trenner auch noch - und /

Probier ihn mal aus:
 
Sieht sehr sehr komplex aus :)
Oh ein Datum mit Regex zu validieren kann durchaus komplex werden.

Der obige Regex verhindert Falscheingaben wie:
32.01.2020
01.13.2020
00.12.2020
30.02.2020
29.02.2021 (nur im Schaltjahr hast du einen 29. Februar)

Erlaubt aber auch nur Eingaben von
01.01.1600 (Jahr 1599 oder früher wird nicht unterstützt)
bis 31.12.9999 (Jahr 10000 oder später wird nicht unterstützt)

ABER: Du hast recht, ein weniger komplexes Modell ist vermutlich zu bevorzugen. Kommt halt drauf an, für wichtig du Genauigkeit hältst und wo du die Grenzen setzt (ob du z.B. auch sowas wie: 01.01.1499 oder 01.01.10000 eingeben können musst)
 
Werbung:
Ein schönes Pattern kann ich auch beisteuern für ein Datum aus dem deutsprachigen Raum, mit Schaltjahren:
pattern="(?!.*0000)((0[1-9]|1\d|2[0-8])\.(0[1-9]|1[0-2])|(29|30)\.(0[13-9]|1[0-2])|31\.(0[13578]|1[02]))\.\d{4}|(29\.02\.)(((1[5-9]|[2-4]\d)(0[48]|[13579][26]|[2468][048]))|(16|[24]0|2[048]|3[26])00)"

Weitere Pattern findet man hier: https://input-pattern.com
..ist meine Seite, nicht dass jemand meckert :) hth.
 
[..]Formularfelder [...] Kann mal jemand bitte schauen ob das so korrekt wäre?

Du kannst eigentlich Dein pattern ganz leicht prüfen. mach dir nur eine kleine html seite:
HTML:
<input type="text" pattern="\d" />
Du gibst dann einfach das ein, was du glaubst, das als Eingabe da rein gehört und natürlich testweise auch eine falsche Eingabe. Du siehst dann schon ob der Browser das ok findet.
Und wenn Du dann noch deinen Entwurf in Blöcke teilst.
HTML:
<input type="text" pattern="([0-3][0-9])\d{2}"
dann siehst Du dass das niemals für einen TAG passen kann.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben