Une expression réguilière.... plutôt singulière....

Résolu
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 - 27 janv. 2008 à 15:22
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 - 27 janv. 2008 à 18:15
hello tout le monde!!

tout d'abord mon problème:
ça fait quelques heures que je me bats avec cette expression régulière....
<hr size= "2" width="100%" />/^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$/
<hr size="2" width="100%" />qui comme vous le voyez est assez énorme, et malheureusement pas écrite par moi.... d'où aussi mon mal à la décortiquer....
enfait elle sert à vérifier si une date est bien valide (je valide un formulaire avec, en JS... donc pas de fonctions bien finie pour le faire... et côté rapidité du code j'aimenrais bien garder cette expression régulière...)....

mon problèe c'est qu'elle marche, mais pas comme je voudrais.... elle valide les dates du format mm/jj/aaaa (format américain) alors que j'aimerais bien avoir jj/mm/aaaa (format euro)....

Bon comme dit, je l'ai déjà tournée et retournée comme je le pouvais, mais rien.
Donc si l'un de vous tous aurait une bonne idée j'en serais très reconnaissant!!

Merci d'avance!

<hr size ="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />

3 réponses

cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
27 janv. 2008 à 16:04
((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01]))) -> parse mm/jj pour les mois de 31 jours

(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30))) -> parse mm/jj pour les mois de 30 jours

((2|02)[\/](([1-9])|([0-2][0-9]))) -> parse  mm/jj pour le mois de
février (prend tjrs 29 jours, ne s'adapte pas suivant que l'année soit
bissectile ou non.

[\/]\d{4}$ -> parse /aaaa, l'année peut être quelconque . ( \d est équivalent à [0-9] )


|^\d{4}$/  -> autorise de mettre que aaaa au lieu de mm/jj/aaaa


Exemple: 01/03/1222,  1256 et 1/3/1222 sont correctes
3
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
27 janv. 2008 à 18:15
J'ai fini par trouver :)

<hr size="2" width="100%" />/^((([1-9])|([0-2][0-9])|(3[01]))[\/](((0[13578])|([13578])|(1[02])))|((([1-9])|([0-2][0-9])|(30))[\/]((0[469])|([469])|(11)))|((([1-9])|([0-2][0-9])))[\/](2|02))[\/]\d{4}$/
<hr size="2" width="100%" />
est la solution de mes problèmes :)

Merci à toi Kysic!!!!

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
3
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
27 janv. 2008 à 18:08
merci pour ta réponse! ça m'a aidé un peu à comprendre le truc..... mais je bloque toujours encore....

Quelqu'un peut-il m'aider???

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
Rejoignez-nous