Veröffentlicht 15. Juni 200421 j hallo, hab gerade angefangen mit wegen einer datumsprüfung mit regex auseinander zu setzten. gibts ne möglichkeit auf wertebereich abzuprüfen? das beste was ich bis jetzt geschafft hab war: [0-3][0-9]\\.?[0-1][0-9]\\.?[0-9]{2,4} nur ist hier das problem das z.b. der 39.19.2004 auch geht. also kann ich ein normales datum mit einem einzigen regulärem ausdruck prüfen?
15. Juni 200421 j Warum? Versuch doch einfach den String in ein Datum zu parsen und falls eine Exception auftritt, ist das Datum falsch. Gruß Jaraz
15. Juni 200421 j Da muss ich Jaraz Recht geben, das wäre auf jeden Fall die bessere Variante, da so auch gleich die Gültigkeit des Datums geprüft wird (30.02.03 ist zum Beispiel ungültig). Aber trotzdem der Regex dazu (für preg-Funktionen von PHP, ist also PERL-Kompatibel) /((?:0(?!0)|1|2|3)(?<!3)[0-9]|3[0-1])\.((?:0(?!0)|1)(?<!1)[0-9]|1[0-2])\.((?:[0-9]{4})|(?:[0-9]{2}))/ Hier wird geprüft, ob die Zahl vor dem Punkt zwischen 01 und 31 liegt, die Zahl zwischen dem Punkt zwischen 01 und 12 und die Jahreszahl 2 oder 4 Stellen hat (bei drei Stellen werden nur die ersten beiden zurückgegeben). Für Tag, Monat und Jahr werden auch Backreferences erzeugt.
6. Januar 201015 j Hallo zusammen, Also die RegEx ist wirklich gut jedoch hat sie einen Fehler. Wenn ich Tages bzw. Datumswerte eingebe wie z.B. 1 oder 5 also jene die nicht mit 0 anfangen trifft diese RegEx nicht zu. Da ich mich lange nicht mehr mit RegEx beschäftigt habe bitte ich um eine kurze Hilfe Stellung. MFG Shadow
6. Januar 201015 j Nein Nein ich meinte nur, dass Datumswerte wie z.B. 1.5.2009 nicht gültig sind da diese Reg Ex eine 0 voraussetzt also 01.05.2009. Habe sie aber soweit abgeändert, dass es funktioniert. Bezogen auf Schaltjahr ist es klar, dass die Abfrage gesondert behandelt werden muss. Die Schaltjahr Problematik habe ich aber bereits gelöst.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.