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 :

RegExp testant la présence de chiffres entre parenthèses


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut RegExp testant la présence de chiffres entre parenthèses
    Bonjour à tous,

    J'aimerais savoir si une chaîne de caractère contient la séquence suivante : parenthèse 2 chiffres entre 0 et 9 parenthèse

    J'ai donc écrit le code suivant utilisant une RegExp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var rgxDep = new RegExp("\([0-9]{2}\)");
    alert( rgxDep.test("Paris (75)") );
    }
    Le bout de code ci-dessus renvoie bien "true", ce qui est normal car la chaîne contient le motif.

    Le problème est que rgxDep.test("Paris V (75005)") renvoie également true.
    Alors que la chaîne contient 5 chiffres entre les parenthèses, et non 2.

    L'expression régulière n'étant pas compliquée, je ne vois pas où se situe le problème.

    Auriez-vous des pistes ?

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    J'm'y connais pas trop mais en ajoutant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rgxDep = new RegExp("\([0-9]{2,2}\)");
    C'est-à-dire préciser un minimum mais aussi un maximum.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,

    J'm'y connais pas trop mais en ajoutant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rgxDep = new RegExp("\([0-9]{2,2}\)");
    C'est-à-dire préciser un minimum mais aussi un maximum.

    Merci de ta réponse, mais j'ai déjà tenté ceci et le résultat est le même.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut

    http://www.chezmoicamarche.org/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var rgxDep = /\([0-9]{2}\)/;
    var chaine="Paris(70)"
    var res=rgxDep.test(chaine)
    alert( res ) ;
    var chaine2="Paris(751005)"
    var res=rgxDep.test(chaine2)
    alert(res)
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message

    http://www.chezmoicamarche.org/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var rgxDep = /\([0-9]{2}\)/;
    var chaine="Paris(70)"
    var res=rgxDep.test(chaine)
    alert( res ) ;
    var chaine2="Paris(751005)"
    var res=rgxDep.test(chaine2)
    alert(res)
    Ça fonctionne chez moi également, en utilisant cette déclaration de la regexp.

    Le constructeur new RegExp("...") fait des siennes...

    En tout cas merci, le problème est résolu.

    Utiliser un new pour les expressions régulières, on ne m'y prendra plus !

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Hé bien voila. Le constructeur "new RegExp(...)" ne fonctionne pas exactement comme les "/.../".

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si tu veux utiliser new RegExp il faut echapper à tour de bras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rgxDep = new RegExp('\\([0-9]{2}\\)');
    une fois pour js et une fois pour la regexp
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Citation Envoyé par vermine Voir le message
    Hé bien voila. Le constructeur "new RegExp(...)" ne fonctionne pas exactement comme les "/.../".
    J'avais eu l'idée de regarder de ce côté là : initialiser la RegExp différemment.

    Mais une lecture de la documentation de JS m'en avait dissuadé.

    Je m'explique : j'ai récupéré la documentation JS via le post dédié sur le forum

    En ouvrant regex.html de la documentation, on peut lire - je cite - la phrase suivante :

    So the following expressions create the same regular expression:

    /ab+c/i
    new RegExp("ab+c", "i")
    L'expérience à l'origine de ce post me semble être en contradiction avec cette phrase !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Chiffres entre parenthèses
    Par Aurel51 dans le forum Excel
    Réponses: 4
    Dernier message: 14/11/2013, 18h09
  2. REGEXP pour détecter chiffres entre parenthèses
    Par noyau dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/01/2010, 10h18
  3. [RegEx] Regex trouvé des chiffres entre parenthèse
    Par narayana_seb dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2007, 19h51
  4. Réponses: 11
    Dernier message: 24/07/2006, 08h30
  5. Réponses: 8
    Dernier message: 02/11/2005, 14h16

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