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

Langage PHP Discussion :

Vérifier les parenthèses [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Par défaut
    Salut,
    je veux un regexp pour verifier pour chaque parentheses ouverte j'ai une parenthese fermée
    exemple :
    (val1 and val2) or (val3 or val4)

    en fait cette regExp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var regex =new RegExp("\([^\)]*\)", "g");
     if (regex.test(maChaine)) {            
                true;
            } else {       
                false;         
            }
    marche pas.
    si je tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maChaine = "(1 and (2 or 3) and 4
    il m'envoyer true.

    merci de m'aider

  2. #2
    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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    le come back du retour de la vengeance ...

    Il me semble que l'on t'a déja expliqué que la recursivité n'existait pas en 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 !

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 507
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 507
    Par défaut
    idee a 2 francs : pourquoi ne pas compter le nombre de parentheses ouvertes puis le nombre de parentheses fermees.
    if(($total_ouverte - $total_fermee) != 0)
    echo 'pas bon';
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    par contre en php il est possible de parcourrir la chaine et la parser à la recherche de ( puis de (...
    à chaque occurrence de ( on incrémente une variable, à chaque occurrence de ) on la décrémente
    si à la fin de la chaine on a 0 et que l'on n'est jamais passé par du négatif
    c'est tout bon ...
    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 éclairé Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Par défaut
    Salut,
    Merci de votre Reponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
              var incr = 0;
              for(var i =0 ; i < maCahine.length; i++){
                    if(maCahine[i] == '('){
                       incr++;
                    }
                    if(maCahine[i] == ')'){
                        incr--;
                    } 
                }
    Citation Envoyé par SpaceFrog Voir le message
    si à la fin de la chaine on a 0 et que l'on n'est jamais passé par du négatif
    c'est tout bon ...
    ???????????????

  6. #6
    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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    ben teste ...
    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 !

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    idee a 2 francs : pourquoi ne pas compter le nombre de parentheses ouvertes puis le nombre de parentheses fermees.
    if(($total_ouverte - $total_fermee) != 0)
    echo 'pas bon';
    Cette solution me semble suffisante pour le but recherché, mais si vraiment tu veux te compliquer la vie, tu peux garder les regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $reg = '/\((?:[^()]*|(?R))*\)|[\w ]+/';
     
    $str = '(val1 and (val2 or val5)) or (val3 or val4)';
    preg_match_all($reg, $str,$m);
    print implode('', $m[0]) == $str ? "ok":"ko";
     
    $str = '(val1 and (val2 or val5) or (val3 or val4)';
    preg_match_all($reg, $str,$m);
    print implode('', $m[0]) == $str ? "ok":"ko";
    PS : oui, c'est de la récursivité...

  8. #8
    Membre éclairé Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Par défaut
    Salut,
    merci de votre reponse,
    j'ai deux question :
    je peux utiliser ce regexp en javascript ?
    (?R) Ce que cela signifie ?

    merci de votre reponse

  9. #9
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    (?R) est pour la récursivité, et c'est pour cela que je ne pense pas que ce soit faisable en javascript.

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

Discussions similaires

  1. [Regex] Comment gérer les parenthèses ?
    Par davcha dans le forum Framework .NET
    Réponses: 7
    Dernier message: 27/03/2006, 15h28
  2. Fonction "Vérifier les noms" dans Outlook
    Par vciofolo dans le forum Access
    Réponses: 2
    Dernier message: 15/03/2006, 09h35
  3. [C#][WinForms][DataGrid]Vérifier les valeurs saisies
    Par loverdose dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/12/2005, 12h29
  4. [Formulaire] vérifier les champs avant enregistrement
    Par julien_t_m dans le forum Access
    Réponses: 5
    Dernier message: 16/10/2005, 21h53

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