Le plus simple (ce n'est que mon avis) est de convertir la chaine de caractères en une date et de vérifier que les éléments retrouvés sont les bons.
Pour ce faire, il suffit de 3 étapes:
- vérifier que la chaîne initiale ressemble à une date valide,
- créer une date avec ses éléments,
- comparer les éléments obtenus avec ceux d'origine.
Vérification du format
Ceci se fait avec une expression régulière qui permettra de vérifier que l'on a une chaîne composée de deux fois 'un ou deux chiffres suivis d'un slash'n le tout suivi de quatre chiffres. Cela nous permet donc d'avoir de 0/0/0000 à 99/99/9999.
Création de la date
En créant un objet Date utilisant les 3 éléments jour, mois[1] et année, nous créons une nouvelle date.
JavaScript corrige automatiquement les erreurs, c'est à dire que:
test = new Date(2009,12,32)
renverra le 1er janvier 2010
Comparaison
Il s'agit d'une simple comparaison de chaînes, la moindre erreur signifie que la date n'est pas valide.
Le code
function validDate(strDate) { var pattern = /^(\d{1,2}\/){2}\d{4}$/|> if (!strDate.match(pattern)) return false; myDate = (strDate).split("/"); var testDate = new Date(myDate[2],myDate[1]-1,myDate[0],0,0,0); if ((testDate.getFullYear()!=myDate[2]) || (testDate.getMonth()!=(myDate[1]-1)) || (testDate.getDate()!=myDate[0])) { return false; } else { return true; } }
Notes
[1] les mois vont de 0 (janvier) à 11 (décembre)