Attention, ce sujet est un sujet ancien (4919 jours sans réponse)
max
+1
ovh
En effet les regexp sont faits pour valider des formats, pas des valeurs.
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.
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 +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
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
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
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.
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.
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
Catégorie:  






Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?