Verifier les parenthese via les regexp [Résolu]

Signaler
Messages postés
3
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
26 janvier 2010
-
Messages postés
3
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
26 janvier 2010
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
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
Messages postés
3
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
26 janvier 2010

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;
}
}
Messages postés
3
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
26 janvier 2010

merci de votre reponse..

tu as raison !!!