Regulärer Ausdruck für Datumsformat

visiondpc

Erfahrenes Mitglied
Hallo, ich will überprüfen ob es sich bei einem vom Benutzer eingegebenen String um ein Datum handelt. Leider scheitere ich mal wieder am regulären Ausdruck. Könnte mir da vielleicht jemand auf die Sprünge helfen?

PHP:
if(ereg("/[0-9]{2,2}\.[0-9]{2,2}\.[0-9]{2,4}/", $_POST['medientypmerkmal']))
 
wie währe es damit? So hast du gleich noch eine Prüfung ob es das Datum gibt und nicht 99.99.9999 ist

PHP:
<?
$date           = '14.3.2008';
list($d,$m,$j)  = explode('.',$date, 3);

var_dump(checkdate($m,$d,$j));
?>
 
Danke, aber das mit dem Regulären Ausdruck funktioniert leider auch nicht.
Ich denke ich greife auf die zweite Möglichkeit zurück da klappts bestens.
Danke.
 
Nur der Vollständigkeit halber:

Die Delimiter sind natürlich kappes.

So läufts:
PHP:
if(ereg("([0-9]{2})\.([0-9]{2})\.([0-9]{2,4})", $_POST['medientypmerkmal']))
 
Nur der Vollständigkeit halber:

Die Delimiter sind natürlich kappes.

So läufts:
PHP:
if(ereg("([0-9]{2})\.([0-9]{2})\.([0-9]{2,4})", $_POST['medientypmerkmal']))
Ich weiß das Thema ist alt aber ich habe mal eine Nachfrage dazu:

Wie verändere ich es so, dass die Werte so eingegeben werden müssen:

1. Format: xx.xx.xxxx (Sprich nicht 6.7.2010, sondern 06.07.2010)
2. Tag zwischen 01 und 31 (Man könnte ja auch 65.32.2010 eingeben)
3. Monat zwischen 01 und 12

?
 
2. Tag zwischen 01 und 31 (Man könnte ja auch 65.32.2010 eingeben)
Wie bereits gesagt wurde, ist das relativ egal, wenn du mit checkdate() auf die Existenz des Datums prüfst.

Dennoch mal ein Ansatz dazu:
Code:
/(0[1-9]|[1-2][0-9]|3[0-1])/
Matcht Zahlen von 01 bis 31. Allerdings hast du dann noch nicht sichergestellt, dass der gewählte Monat auch wirklich 31 Tage hat.

Am sinnvollste ist wohl eine Kombination aus regulärem Ausdruck und der Funktion checkdate(): http://hallophp.de/regulaere-ausdruecke/10-eingabe-auf-datum-pruefen
Mit dem regulären Ausdruck prüfst du zuerst, ob die Eingabe im richtigen Format vorliegt und lässt dann noch checkdate drüberlaufen.

Gruß
 
Zurück