Posez votre question Signaler

[Javascript] Vérifier parentheses via regex [Résolu]

devMan 60Messages postés 10 décembre 2009Date d'inscription 16 septembre 2010Dernière intervention - Dernière réponse le 26 janv. 2010 à 10:56
Bonjour,
j'ai une zone de text dans laquel l'utilisateur peut saisi quelque chose comme ça:
(1 and 2) or 3 ou bien (1 and (2 and 3) or 4)....
je veux une reg exp pour vérifier pour chaque parenthèse ouverte j'ai une parenthèse fermée.
Lire la suite 

[Javascript] Vérifier parentheses via regex »

9 réponses
Réponse
+0
moins plus
Salut,

Et le langage est ???
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
merci de votre reponse,
JavaScript
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Je pense qu'il faudra utiliser des motifs recursifs.
Je ne connais pas l'implementation en JavaScript.

En revanche je pourrai te donner en Perl.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
tu peux me donner en Perl et je vais voir comment je peux le traduit en javascript..
Ajouter un commentaire
Réponse
+0
moins plus
Re,

je veux une reg exp pour vérifier pour chaque parenthèse ouverte j'ai une parenthèse fermée.
En ce cas il suffit de compter les paranthèses ouvrantes/fermantes.

En fait ce n'est pas vraiment ça que tu veux, puisqu'il faut aussi le bon emplacement sinon il pourra saisir ça et ça passera

(1 and )2 or 3 ou bien (1( and 2 and 3) or 4)....

Quelque chose comme ça, mais il faut peaufiner je pense

#!/usr/bin/perl

$str="(1 and (2 and 3) or 4)";
$str=~/(\((?:(?>[^()]+)|(?1))*\))/;
($str eq $1)?print "$1 ok\n":print "ne corresponds pas\n";
# manque une paranthese
$str="(1 and (2 and 3 or 4)";
$str=~/(\((?:(?>[^()]+)|(?1))*\))/;
($s eq $1)?print "$1 ok\n":print "ne corresponds pas\n";
__END__
lami20j - 16 déc. 2009 à 11:47
Re,

Correction

#!/usr/bin/perl

$str="(1 and (2 and 3) or 4)";
$str=~/(\((?:(?>[^()]+)|(?1))*\))/;
($str eq $1)?print "$1 ok\n":print "ne corresponds pas\n";
# manque une paranthese
$str="(1 and (2 and 3 or 4)";
$str=~/(\((?:(?>[^()]+)|(?1))*\))/;
($str eq $1)?print "$1 ok\n":print "ne corresponds pas\n";
__END__
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
merci de votre reponse,
tu peux me donner des explications sur ce que tu as fait stp ?
$str=~/(\((?:(?>[^()]+)|(?1))*\))/;

?: , ?> , ?1 ..................
Pour être en mesure de convertir ce regexp à javaScript
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Tu trouveras les explications ici http://perl.enstimac.fr/DocFr/perlre.html#motifs%20étendus
Ajouter un commentaire
Réponse
+0
moins plus
Re,
merci de votre reponse,
il me semble ça va pas marcher avec les regexp javascript...
car je pense que les lookbehind : (?<=X) positive lookbehind et (?<!X) negative lookbehind .
n'existe pas en javascript..
par contre je peux faire ça :
var incr = 0; 
var parentheseOk = false; 
for(var i =0 ; i < maChaine.length; i++){ 
     if(maChaine[i] == '('){ 
         incr++; 
     } 
     if(maChaine[i] == ')'){ 
        incr--; 
        if (incr < 0) { 
            break;
        } 
     }
}
alert(incr);
parentheseOk = (incr == 0) ;
alert(parentheseOk);


merci et bon dev
Ajouter un commentaire
Ce document intitulé « [Javascript] Vérifier parentheses via regex » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?