Benutzername    Passwort    Autologin    
  Passwort vergessen       Registrieren  
beeForum Foren-übersicht » hal9000
Neues Thema eröffnen   Neue Antwort erstellen Hervorhebung entfernen


Regular Expression für Datum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
boris



Beiträge: 10150

Titel: Regular Expression für Datum
Verfasst am: Fr, 06 März 2009, 10:56
Beitrag
Antworten mit Zitat

Falls mal jemand einen regulären Ausdruck für ein gültiges Datum braucht, ich hab mir den Gehirnfick mal gegeben:

Code:
^(((1[6-9]|[2-9]\d)\d{2})\-(0?[1-9]|1[0-2]))\-((0?[1-9]|1\d|2[0-8]))$|^(((1[6-9]|[2-9]\d)\d{2})\-(((0?[13578]|1[02])\-31)|((0?[1,3-9]|1[0-2])\-(29|30))))$|^((?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])))\-0?2\-29)$

Das Teil habe ich zwar nicht komplett neu gebaut, aber das ursprüngliche Format war TT/MM/JJJJ

jetziges Format:
JJJJ-MM-TT

gültig von 1.1.1600 – 31.12.9999

Schaltjahre werden auch korrekt validiert


wen die Schritte vom Original zum jetzigen Ausdruck interessieren:

Spoiler:
Code:
Datum RegExp:

Original:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\/0?[13578]|1[02])|(?:(?:29|30)\/(?:0?[1,3-9]|1[0-2])))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:29\/0?2\/(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26]))))$

This expression validates dates in the Brazilian d/m/y format from 1/1/1600 - 12/31/9999. The days are validated for the given month and year.


Trennzeichen "-"
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\-(?:0?[1-9]|1[0-2]))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\-0?[13578]|1[02])|(?:(?:29|30)\-(?:0?[1,3-9]|1[0-2])))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:29\-0?2\-(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26]))))$


Schaltjahr:
(?:29\-0?2\-(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26]))))

Schaltjahr umgebaut:
^((?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])))\-0?2\-29)$


Datum umgebaut:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\-(?:0?[1-9]|1[0-2]))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\-0?[13578]|1[02])|(?:(?:29|30)\-(?:0?[1,3-9]|1[0-2])))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^((?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])))\-0?2\-?:29)$


Datum:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\-(?:0?[1-9]|1[0-2]))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$  |  ^(?:(?:(?:31\-0?[13578]|1[02])|(?:(?:29|30)\-(?:0?[1,3-9]|1[0-2])))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$


Teil 1:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\-(?:0?[1-9]|1[0-2]))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$

Teil 1 umgebaut:
^(((1[6-9]|[2-9]\d)\d{2})\-(0?[1-9]|1[0-2]))\-((0?[1-9]|1\d|2[0-8]))$




Teil 2:
^(?:(?:(?:31\-0?[13578]|1[02])|(?:(?:29|30)\-(?:0?[1,3-9]|1[0-2])))\-(?:(?:1[6-9]|[2-9]\d)\d{2}))$



Teil 2 umgebaut:
^(((1[6-9]|[2-9]\d)\d{2})\-(((0?[13578]|1[02])\-31)|((0?[1,3-9]|1[0-2])\-(29|30))))$



Datum umgebaut:
^(((1[6-9]|[2-9]\d)\d{2})\-(0?[1-9]|1[0-2]))\-((0?[1-9]|1\d|2[0-8]))$|^(((1[6-9]|[2-9]\d)\d{2})\-(((0?[13578]|1[02])\-31)|((0?[1,3-9]|1[0-2])\-(29|30))))$|^((?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])))\-0?2\-29)$


____________
beehave - home of humbug ... [we can't afford to be neutral]

Nach oben
Private Nachricht senden Website dieses Benutzers besuchen Rang:godmode methusalem 3. platz professioneller Sportangler Profi-Winzer (7x Hamm) Arcade-Meister, Rang 16 rainbow-cup
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    beeForum Foren-übersicht » hal9000 Seite 1 von 1
Gehe zu:  



ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Regular Expression für Telefonnummer boris hal9000 0 Fr, 06 März 2009, 10:58 Letzten Beitrag anzeigen


Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
phpBB © phpBB Group | impressum