PHP erkennt von Haus aus erst mal gar kein Datumsformat.
Sicher doch - damit liest man einfach Pauschal alle Werte anhand eines definierten Formats ein und prüft dann mit checkdate das Datum auf Gültigkeit. Wenn es gültig ist, macht man mit dem nächsten Muster weiter.
31/01/2008 würde somit beim Format 'd/m/Y' durchkommen, beim Format 'm/d/Y' aber nicht.
Problematisch sind aber die von MudGuard angesprochenen Fälle.
- Zahlen mit 4 Stellen sind in jedem Fall Jahreszahlen
Was ist mit vertippern? z.B. 3101.2009
- Die Jahreszahl ist in der Regel ganz hinten
Was ist mit 2009-01-31?
Die RegExp, die zum Erkennen notwendig ist [...]
Ein regulärer Ausdruck ist wie gesagt nicht notwendig. PHP stellt ja schon ein paar Funktionen bereit.