RegEx überprüfung für Zeit (dd.mm.yyyy hh:mm:ss)

Scorp1337

Erfahrenes Mitglied
Hi Leute,
wollte mal fragen wo das "Problem" liegt. Ich habe jetzt erfolgreich meinen Pattern zusammengestrickt:

Code:
/^((\d{2}).(\d{2}).(\d{4}))\s(([01]?\d|2[0-3]):([0-5][0-9]):([0-5][0-9]))/

Der nachfolgende war es vorher und irgendwie versthee ich nicht wieso dieser nicht auf Sekundenwerte >60 reagiert
Code:
/^((\d{2}).(\d{2}).(\d{4}))\s(([01]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)?)/

Grüße
Scorpion
 
Genauer gesagt mein gesamter Code ist hier:
PHP:
if (!preg_match('/^((\d{2}).(\d{2}).(\d{4}))\s(([01]?\d|2[0-3]):([0-5][0-9]):([0-5][0-9]))/', $string[0], $match) 
	|| !checkdate($match[3], $match[2], $match[4])
	|| $match[6] > 24 
	|| $match[7] >= 60 
	|| $match[8] >= 60
	) {
	$error = 1;
}
 
Sekundenwerte größer als 60 gibt es bei Uhrzeiten zunächst nicht. Außerdem Überprüfst du mit [0-5][0-9] nur auf alles zwischen 00 und 59, du müsstest also den ersten der beiden Ausdrücke bearbeiten. Kannst du uns noch ein Beispiel geben, bei dem es funktionieren soll (aber es nicht funktioniert)?
 
Hi,
ich glaube ich habe sogar schon den korrekten Code gepastet und es gar nicht gemerkt :-D

...war 'n langer Tag ;)

Also ich importiere generierte Logfiles von SVN bzw. InstallShield. Die Builddates sehen dann so aus (mit * werden jez korrekt als fehler ausgegeben):
10.10.2010 17:40:40
05.12.2010 17:59:59
03.12.2010 00:40:00
03.12.0001 17:40:40
31.02.2010 17:40:10 *
03.13.2010 17:40:40 *
03.00.2010 17:40:40 *
32.12.2010 17:40:40 *
03.6.2010 17:40:20 *
03.12.10 17:40:40 *
03.12.20 17:40:40 *
00.12.2010 17:40:40 *
03.12.2010 17:60:40 *
03.12.2010 23:40:70 *

Gute Nacht! :)
Scorp

PS: Achja wieso meinst du eigentlich, dass ich "nur" auf das überprüfe...?
 
Ich würde hier auf eine formale Überprüfung verzichten und stattdessen mit [phpf]strtotime[/phpf] prüfen ob ein sinnvolles Ergebnis herauskommt.
 
Zurück