IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

regex qui ne fonctionne pas?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 94
    Points : 67
    Points
    67
    Par défaut regex qui ne fonctionne pas?
    bonjour,
    je cherche à tester les valeurs entre 0 et 24

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	var chiffres =new RegExp([01][0-9] | [2][0123]);
    var verif;
    verif = chiffres.test(champ.value);
    alert(verif);
    j'ai essayé ce code mais il me renvoie faux
    pour des valeurs comme 0 ou 1 ou 6 ou 15 ....
    je ne comprend pas d'ou vient le pb
    j'ai essayé avec la syntaxe suivante mais même pb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	var chiffres =new RegExp([01][0-9] | [2][0123]);
    merci pour votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je ne répond pas à la question mais pourquoi via regexp ?
    pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (0 <= val && val <= 24)
    ???

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    essais

    var chiffres =new RegExp(^[01][0-9]$ | ^[2][0123]$);

    je suis pas un pro de la syntaxe des expréssions réguliaires en js mais je pense qui faut grouper des blocks d'expréssion, comme tu l'a fait j'aurais tendance a dire kil cherche un 0 ou 1, suivi d'un chiffre ou d'un 2, suivi d'un chiffre compris entre 0 et 3

  4. #4
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    En plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /^(\d|0\d|1\d|2[01234])$/
    tu dois tester aussi tes debuts et fin de chaine et prendre en compte le cas ou ton chiffre fait 1 seul caractere.
    Lien pour tester ses regexp

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    moi j'aurai fais plutot ça :
    var chiffres =new RegExp(^[0-9]$ | ^[12][0123]$);
    sinon pour les chiffres inférieurs à 10 tu obliges la forme 01,02,...
    mais je ne suis pas un expert des RegExp
    De plus j'ai eu des soucis avec test() alors je te conseillerais match() à la place

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    dac avec Mr N. et même dmarche: j'ai même pas cherché à comprendre ton masque, qui me paraît inutile;

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par javatwister
    dac avec Mr N. et même dmarche: j'ai même pas cherché à comprendre ton masque, qui me paraît inutile;
    Vi je pense inutile pour ce traitement mais les expressions réguliaires sont plus que pratiques pour des traitements plus compliqué et vouloir en utiliser pour des traitements simples c'est bien pour commencer à apprendre

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par leywos
    Vi je pense inutile pour ce traitement mais les expressions réguliaires sont plus que pratiques pour des traitements plus compliqué et vouloir en utiliser pour des traitements simples c'est bien pour commencer à apprendre
    +1
    J'ai appris un truc de plus grace à ce thread, enfin surtout grace à fred777888999...

    Néanmoins, ici on teste une plage de valeurs, les expressions régulières ne sont pas faites pour ca, elles sont faites pour "matcher" des patterns sur des chaines de caractères...
    En utilisant pas les bons outils, on rend le code illisible, difficilement maintenable (ex : on a maintenant des float => immediat avec la plage de valeurs, prise de tete avec regexp -- enfin pour moi) et je suis sur que ca bouffe plus de ressources...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 94
    Points : 67
    Points
    67
    Par défaut
    je devients fou....
    j'ecris ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	var chiffres = new RegExp(^[01][0-9]$ | ^[2][0123]$);
    le code javascript n'est pas compilé

    jessaie avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	var chiffres = new RegExp("^[01][0-9]$ | ^[2][0123]$");
    ca compile mais tous mes essais renvoie faux....

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    COMPILE ????? (ça se voit que c'est vendredi...la fatigue)

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Bien fait tu n'as qu'à pas utiliser les regexp pour un test de plage de valeur... non mais !

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var chiffres = /^[01][0-9]$ | ^[2][0123]$/;

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et pourquoi que tu prends pas ça ?
    Citation Envoyé par fred777888999
    En plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /^(\d|0\d|1\d|2[01234])$/
    tu dois tester aussi tes debuts et fin de chaine et prendre en compte le cas ou ton chiffre fait 1 seul caractere.
    Lien pour tester ses regexp

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 94
    Points : 67
    Points
    67
    Par défaut
    effectivement ca fonctionne....
    vendredi......
    Citation Envoyé par Mr N.
    Et pourquoi que tu prends pas ça ?
    Citation Envoyé par fred777888999
    En plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /^(\d|0\d|1\d|2[01234])$/
    tu dois tester aussi tes debuts et fin de chaine et prendre en compte le cas ou ton chiffre fait 1 seul caractere.
    Lien pour tester ses regexp

  14. #14
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    bon ca m'a pris 5mn, suffit de chercher un peu les gars qd meme

    chiffres = new RegExp(/^[0-9]$|^[12][0123]$/);
    verif = chiffres.test(document.monForm.id_champ.value);
    alert(verif);
    surtout ne pas mettre d'espace ds ton expressions car l'espace est un caractères.

    aprés l'expression est a ton gout, la ca marche pour les valeurs 1, 2, 3 ... 10, 11, ... 23, 24

Discussions similaires

  1. [RegEx] Regex simple mais qui ne fonctionne pas comme il faut
    Par yagami77 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2011, 23h27
  2. Regex qui ne fonctionne pas
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 0
    Dernier message: 22/10/2009, 19h10
  3. Regex qui ne fonctionne pas
    Par obito dans le forum Windows Forms
    Réponses: 8
    Dernier message: 24/04/2009, 23h45
  4. [RegEx] Regex simple qui ne fonctionne pas
    Par Bruno.C dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2008, 15h05
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo