Uhrzeit eingabe überprüfen

matzseesi

Erfahrenes Mitglied
Hi Leute

Ich habe das Problem dass bei einem Formular eine Uhrzeit nach folgender Form eingegeben werden muss

hh:mm also so 22:30

ich habe dazu eine regex gemacht die aber nicht ganz funktioniert.
Da ich totaler Neuling am Gebiet Regex bin wäre es super wenn mir wer sagen kann was daran falsch ist

PHP:
if(!eregi('[0-2][0-9]:[0-5][0-9]',$time))
{
 echo "fehler";
}

Grüße Matz

*edit* Klammer hinzugefügt (ist im orig Skript immer schon vorhanden gewesen)
 
Zuletzt bearbeitet:
Der Ausdruck ist schon richtig, aber es fehlt eine schließende Klammer am Ende der if-Bedingung.

Gruß hpvw
 
sorry abtipp fehler!

die schließende Klammer ist natürlich da es geht nur um den regex ausdruck! der funktioniert so nicht!
 
Bei mir funktioniert er.
22:30 lässt er durch, 22:70 geht daneben.
Beschreibe doch mal konkret, bei welchen Beispielen es nicht funktioniert.

Gruß hpvw
 
Hier noch eine genauere Version, da auch Uhrzeiten wie „25:00“ als zulässig einstufen:
PHP:
<?php

	if( !(bool)preg_match('/^(?:2[0-4]|[01][0-9]):[0-5][0-9]$/', trim($time)) ) {
		echo 'Uhrzeit ungültig!';
	}

?>
 
Servus Gumbo (und alle anderen mit Ahnung vom Thema),

ich muss mal diesen Thread nach vorne holen.

Ich habe mal deine RegEx für meine Zwecke "geklaut".
Leider macht diese nicht ganz das was ich "möchte".

Wenn eine Zeit von 0:10 (welche ja durchaus richtig ist) eingebe - dann bekomme ich die Info, dass die Uhrzeit falsch ist. Wenn ich 00:10 eingebe dann funktioniert es.

Wie müsste man den die RegEx umschreiben (du weist ich bin kein RegEx-"Gott") damit das auch mit 0:10 oder 1:12 etc. funktioniert?

Vielen Dank für deine Hilfe im Voraus!
 
Hallo!

Ich habe mal deine RegEx für meine Zwecke "geklaut".
Leider macht diese nicht ganz das was ich "möchte".
Die RegEx ist faktisch sowieso falsch, denn es wird z.b. auch 24:10 als korrekt ermittelt. ;)

Wenn eine Zeit von 0:10 (welche ja durchaus richtig ist) eingebe - dann bekomme ich die Info, dass die Uhrzeit falsch ist. Wenn ich 00:10 eingebe dann funktioniert es.
So sollte es sowohl mit 0:10 als auch mit 00:10 funktionieren:
PHP:
<?php
$time="21:10";
if( !(bool)preg_match('/^(?:2[0-3]||(([0-9]||0[0-9])||1[0-9])):[0-5][0-9]$/', trim($time)) ) {
    echo "Uhrzeit ungültig!\n";
}
?>
[..] du weist ich bin kein RegEx-"Gott" [..]
Ich auch nicht. :(
Aber eine stichprobenartige Überprüfung meines Codes hat ergeben dass alles von 0:00 (oder auch 00:00) bis 23:59 eigentlich als korrekt ermittelt werden sollte.
Hohes Gericht, irgendwelche Einwände?

Gruss Dr Dau
 
Zurück