Sujet: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
02/06/2011 @ 08:39:53: dubinfo: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
Bonjour tout le monde,

J'ai créé un regex qu me permet de contrôler ce format de données :

980903FL01

Maintenant, je dois donc remplacer
870209MD01
par
19870209MD01
.

Il devrait donc accepter une année sur 4 chiffres.

Savez-vous me dire comment je peux ajouter cette information à ce regex ? :

if(!/^((0[1-9])|([1-9][0-9]))((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[FM][A-Z]((0[1-9])|([1-9][0-9]))$/i.test(dmu))


Merci d'avance

Dubinfo
03/06/2011 @ 13:38:01: gizmo: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
Pourrais-tu donner plus d'info sur le format global accepté? Parce que là, ta regexp, elle pourrait vraiment être simplifiée et optimisée. Mais pour sa il faut connaitre la sémantique de ton code.
03/06/2011 @ 14:04:56: dubinfo: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
Pourrais-tu donner plus d'info sur le format global accepté? Parce que là, ta regexp, elle pourrait vraiment être simplifiée et optimisée. Mais pour sa il faut connaitre la sémantique de ton code.


Salut,

Merci pour ta réponse.

Voici plus d'informations :

Format accepté : YYYYMMDDFL01
Exemple par rapport à ci-dessus : 20010912FL01

Les 4 premiers chiffres correspond à l'année, si on pourrait empêcher l'encodage d'une année supérieure à celle actuelle, ça serait bien.

Les deux suivant sont le mois (entre 01 et 12), la regex n'acepte pas 00 et 13 par exemple.

Les deux suivants correspondent au jour (entre 01 et 31).

La première lettre doit être obligatoirement M ou F (en minuscule ou en Majuscule).

La lettre juste après correspond à la première lettre du nom de famille.

Les deux derniers chiffres sont là pour éviter les doublons (deux patients qui auraient la même date de naissance, le même sexe, et la même première lettre du nom sont comme ça identifiés). Cela va de 01 à 99

J'espère avoir répondu à ta question.

Merci encore pour l'aide.
03/06/2011 @ 14:12:33: Clandestino: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
A vue de pif et sans validation, je dirais :


/[12][890][0-9]{2}[0-1][0-9][0-3][0-9][MF][A-Z][0-9]{2}/gi
03/06/2011 @ 14:17:31: dubinfo: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
A vue de pif et sans validation, je dirais :


/[12][890][0-9]{2}[0-1][0-9][0-3][0-9][MF][A-Z][0-9]{2}/gi


Salut,

Merci pour ton aide.

Cela ne semble pas fonctionner :

L'année peut être supérieure à 2011
Le mois peut être supérieur à 12
Le jour peut être supérieur à 31
...

Ce code fonctionne :

if(!/^(19|20)([0-9]{2})(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[01])[FM][A-Z](0[1-9]|[1-9][0-9])$/i.test(dmu))


à part qu'il ne vérifie pas que l'année soit supérieure à l'année actuelle.

Merci quand même
03/06/2011 @ 14:39:14: Olaf: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
Je n'y connais strictement rien en JS, par contre une regexp ne t'aidera jamais à comparer une chaine avec la date courante. Dans un autre langage, je comparerais `date +M%d` à la date extraite de ta chaîne.


Une petite citation en prime ^^
Citation de: Jamie Zawinski

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.


Mes 2 cents
04/06/2011 @ 07:46:55: gizmo: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
le code que tu donnes dans ton dernier message est le plus valide que tu puisses avoir avec une regexp en javascript. si tu veux plus de validation sur la date, tu vas devoir jouer avec l'objet Date.
04/06/2011 @ 16:05:37: ovh: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
En effet les regexp sont faits pour valider des formats, pas des valeurs.
04/06/2011 @ 16:08:57: max: [JS REGEX] Améliorer ce regex afin d'accepter une date sur 4 chiffres
+1
Retour