Einzelnen Beitrag anzeigen

ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#5

AW: RegEx dd.mm.yyyy hh:mm

  Alt 31. Dez 2014, 11:03
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
Lukas
  Mit Zitat antworten Zitat