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

[Résolu]
Signaler
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
-
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
-
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

Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

((((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
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
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" />
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
8
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" />