Verifier les parenthese via les regexp

Résolu
moukit233 Messages postés 3 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 26 janvier 2010 - 16 déc. 2009 à 18:53
moukit233 Messages postés 3 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 26 janvier 2010 - 26 janv. 2010 à 10:59
Salut,
j'ai une zone de texte dans lequel l'utilisateur peut saisi quelque chose comme ça:
(val1 and val2) or val3
ou bien (val1 and (val2 or val 3) val4)
ou bien d'autre forme.....
je veux un regxp qui vérifier pour chaque parenthèse ouverte un parenthèse fermée

merci d'avance

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 janv. 2010 à 11:35
fais plutot :

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;
        } 
    }
}
parentheseOk (incr 0) ; 


ainsi, une chaine comme :

())(

ne sera pas valide

Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 déc. 2009 à 10:56
la technologie que tu utilises autorise t'elle les expressions régulières récursives ?

sinon, un truc simple reste de les compter...

tu parcoure ta chaine caractère par caractère.

( => +1
) => -1

en sortie de boucle, tu dois avoir 0
sachant que tout nombre négatif est interdit en cours de boucle.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
moukit233 Messages postés 3 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 26 janvier 2010
15 janv. 2010 à 11:28
Salut,
Merci de votre reponse

var incr = 0;
var parentheseOk = true;
for(var i =0 ; i < maChaine.length; i++){
if(maChaine[i] == '('){
incr++;
}
if(maChaine[i] == ')'){
incr--;
}
if (incr < 0) {
parentheseOk = false;
}
}
0
moukit233 Messages postés 3 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 26 janvier 2010
26 janv. 2010 à 10:59
merci de votre reponse..

tu as raison !!!
0
Rejoignez-nous