Comment vérifier si une chaîne est un “dd/mm/yyyy” date?

Donné une chaîne str, comment pourrais-je vérifier si il est dans le dd/mm/yyyy format et contient une date légale ?

Quelques exemples:

bla bla      //false
14/09/2011   //        true
09/14/2011   //false
14/9/2011    //false
1/09/2011    //false
14/09/11     //false
14.09.2011   //false
14/00/2011   //false
29/02/2011   //false
14/09/9999   //        true

OriginalL'auteur Misha Moroshko | 2011-09-28