Andreas Korthaus: Reguläre Ausdrücke - Datum

Beitrag lesen

Hi!

if (!eregi('([0-9]{2}).([0-9]{2}).([0-9]{2,4})', $geb)){
  echo ("<font color='red'>Bitte geben Sie das Geburtsdatum nach folgendem Muster ein TT.MM.JJJJ oder TT.MM.JJ!<br> Die Eingabe von <b>$geb</b> ist nicht korrekt.</font><br>");}

Meiner Meinung nach sollten jetzt nur die Eingaben TT.MM.JJJJ und TT.MM.JJJJ erlauben...wenn ich es aber teste geht auch TT.MM.JJJJJ :-(

Du fragst ja auch nur, ob "TT[irgendein Zeichen]MM[irgendein Zeichen]JJJJ" im Such-String enthalten ist. Und das trifft auf "TT.MM.JJJJJ" wohl zu. Es würde übrigens auch "asdjklasdaTTxMMyJJJJasdasd" zutreffen.

An Deiner Stelle würde ich lieber die Perl-kompatiblen Funktionen (PCRE) nehmen, in diesem Fall wohl preg_match().

Und dann vielleicht mal in die Sytax einlesen:

http://de.selfhtml.org/perl/sprache/regexpr.htm
http://de3.php.net/manual/de/reference.pcre.pattern.syntax.php

Du solltest Dich informieren, wozu die Sonderzeichen ^ und $ gut sind, und welche besondere Bedeutung der "." hat, und wie man das verhindert (Stichwort "Maskierung").

Grüße
Andreas

--
SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/