Programmation  » [JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Catégorie :  
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 02/06/2011 @ 08:39:53,
Par dubinfo
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
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 03/06/2011 @ 13:38:01,
Par gizmo
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.
Concept vivant.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 03/06/2011 @ 14:04:56,
Par dubinfo
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.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 03/06/2011 @ 14:12:33,
Par Clandestino
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
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 03/06/2011 @ 14:17:31,
Par dubinfo
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

Dernière édition: 03/06/2011 @ 14:23:01
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 03/06/2011 @ 14:39:14,
Par Olaf
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 +%Y%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
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 04/06/2011 @ 07:46:55,
Par gizmo
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.
Concept vivant.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 04/06/2011 @ 16:05:37,
Par ovh
En effet les regexp sont faits pour valider des formats, pas des valeurs.
Je n'ai rien à voir avec www.ovh.com
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[JS REGEX] Améliorer ce regex afin d'accepter une date sur ...
Publié le 04/06/2011 @ 16:08:57,
Par max
+1
Trololo
Répondre  - Catégorie :  
Informaticien.be  - © 2002-2019 Akretio SPRL  - Generated via Kelare - Hosted by Verixi Internet Services
The Akretio Network: Akretio  - Freedelity  - KelCommerce  - Votre publicité sur informaticien.be ?