Originariamente inviato da 13manuel84
codice:
$str5="03/12/1995";
if (preg_match("/^(0[1-9]|[12]\\d|3[01])[\\/](1[0-2]|0[1-9])[\\/]((19|20)\\d{2})$/",$str5)) echo "
okdata";

questo è il massimo che sono riuscito a tirar fuori, avevo anche io una cosa simile in js.

così ti controlla che la data sia SOLO nel formato gg/mm/aaaa

quindi compresi eventiali zeri se il numero è minore di 10

9/3/2005 -> non lo accetta
09/03/2005 -> corretto

altro controllo che fa è che gg non sia maggiore di 31 e mm maggiore di 12, però uno potrebbe inserirti 31/02/1998, poi sull'anno controlla che inizi con 19 (e quindi anni del 1900) o con 20 (anni del 2000).

Ottenere di più con una preg non so se puoi [si potrà sicuramente ma io non so aiutarti ]
Sono riuscito poi a controllare la data con il checkdata, mi riesci a fare le reg exp anche per il formato inglese (mm/gg/yyyy) e per un formato generico (yyyy/mm/gg)? poi posto la funzioncina...