Was ist das? Der Regex Obfuscation Contest?
Also falls es ernst gemeint ist: Nimm dafür bitte nicht Regex. Regex ist zwar eine tolle Sache, aber es hat seine Grenzen. Das da oben versteht ja kein Mensch.
Es ist vollkommen ernst gemeint
Aber als ich mir meinen eigenen Post nochmal angeschaut habe muss ich zugeben dass das schon ein Höllen-Regex ist
OK, Schaltjahr gefunden.
Genau darum geht es. Alle möglichen Daten mit allen Ausnahmen/Schaltjahren korrekt zu validieren. Und das im Format dd.mm.yyyy hh:mm. Und da ist mir auch mein Fehler aufgefallen!
Fällt dir was auf?
Irgendwas stimmt im letzten Block mit der Uhrzeit nicht.
Nein, umgedreht! Das ist der einzige Block der richtig ist! Ich möchte ja nicht hh:mm:ss sondern hh:mm validieren. Und da liegt der Knackpunkt
Ich habe schlicht und einfach alle anderen Blöcke hh:mm:ss validieren lassen
Code:
(
(
(0[1-9]|[12]\d|3[01])
[\/\.-]
(0[13578]|1[02])
[\/\.-]
((19|[2-9]\d)\d{2})
\s
(0[0-9]|1[0-9]|2[0-3])
:
([0-5][0-9])
)|(
(0[1-9]|[12]\d|30)
[\/\.-]
(0[13456789]|1[012])
[\/\.-]
((19|[2-9]\d)\d{2})
\s
(0[0-9]|1[0-9]|2[0-3])
:
([0-5][0-9])
)|(
(0[1-9]|1\d|2[0-8])
[\/\.-]
(02)
[\/\.-]
((19|[2-9]\d)\d{2})
\s
(0[0-9]|1[0-9]|2[0-3])
:
([0-5][0-9])
)|(
(29)
[\/\.-]
(02)
[\/\.-]
(
(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])
|
((16|[2468][048]|[3579][26])00)
)
\s
(0[0-9]|1[0-9]|2[0-3])
:
([0-5][0-9])
)
)
So haut das ganze hin und danke für die schöne formatierung und den Hinweiß. Sonst hätte ich noch ewig gerätselt.
Aber da der Teil in allen Oder-Blöcken identisch sein sollte, hätte es doch gereicht den Teil auch nur einmal auszuwerden.
Würde den Code gleich mal stark kürzen, vorallem wenn man auch gleich mit alle unnötigen Klammern weglässt.
Außer du willst auch die Sommer-/Winterzeit, sowie Schaltminuten und Schaltsekunden mit beachten.
Okay, gute Idee, werde ich gleich machen
^ am Anfang und $ am Ende?
Vorhanden
Also ich bedanke mich, Problem gelöst
Gruß,
Lukas