Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/05/2011, 18h53   #1
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Par défaut Améliorer un regex existant

Bonjour à tous,

J'ai ce regex qui fonctionne correctement :

Code :
if(!/^\d{6}[a-z]{2}\d{2}$/i.test(dmu))
Je dois donc passer à test une chaine avec ce format :

560912MK01

Donc, 6 chiffres, deux lettres et deux chiffres.

J'aurais voulu rendre le regex encore plus puissant en vérifiant en plus du format, les données entrées :

Je devrais donc avoir :
  • Les deux premiers chiffres doivent former un nombre de 01 à 99
  • Les deux suivants : de 01 à 12
  • Les deux après : de 01 à 31
  • La première lettre : F ou M uniquement (peu importe la casse)
  • La lettre suivante : de A à Z (peut importe la casse)
  • Les deux derniers chiffres doivent former un nombre de 01 à 99

Auriez-vous une idée ?

Je vous en remercie d'avance.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 22h06   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 010
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 010
Points : 45 094
Points : 45 094
Code :
^((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]))$
faut juste se concentrer un peu sur les or et les parenthèses sinon en suivant à la lettre tes indications on arrive à une regex comme ça
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 01/06/2011, 19h52   #3
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Un grand merci à toi Spaffey (je t'ai ajouté un point)

Mais ça bug avec l'année 2000.

bee
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 10h44   #4
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
ou encore

Code :
^\d[1-9]((0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))[FM][A-Z]\d[1-9]$
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/06/2011, 11h56   #5
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Citation:
Envoyé par javatwister Voir le message
ou encore

Code :
^\d[1-9]((0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))[FM][A-Z]\d[1-9]$
Salut javatwister,

Merci pour ton aide.

Ta regex ne semble pas fonctionner

J'ai adapté ma regex afin que je puisse contrôler mon numéro de patient en utilisant la date sur 4 positions (exemple 1987 et non plus 87) :

Code :
1
2
 
^(19|20)((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
Cela semble fonctionner excepté avec l'année 2000 où ça bug...

Auriez-vous une idée ?

Un grand merci d'avance.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 12h08   #6
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
ben ma regexp marchait avec ton premier format en tout cas;

après, je te rappelle que tu excluais l'année "00" en début de chaîne... donc pas 2000 non plus...
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 18h20   #7
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
Code :
/^(19|20)\d{2}((0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))[FM][A-Z]\d[1-9]$/i
attention, je n'ai pas mis de contrôle pour des années ultérieures à 2011;
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/06/2011, 20h51   #8
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Citation:
Envoyé par javatwister Voir le message
ou encore

Code :
^\d[1-9]((0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))[FM][A-Z]\d[1-9]$
Citation:
Envoyé par javatwister Voir le message
Code :
/^(19|20)\d{2}((0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))[FM][A-Z]\d[1-9]$/i
attention, je n'ai pas mis de contrôle pour des années ultérieures à 2011;
Je te remercie pour ton dévouement et ton efficacité.

Je ne peux malheureusement pas tester aujourd'hui, je teste demain.

Bonne soirée et merci encore

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h07.


 
 
 
 
Partenaires

Hébergement Web