1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
var verifierFormeZone = function(){
//constante
var groupeReg = /^(\s*\d+\s*(and|or)\s*)+\d+\s*$/i,
partialStartReg = /^\s*(\s*\d+\s*(and|or)\s*)+$/i,
partialMiddleReg = /^((and|or)\s*\d+)*\s*(and|or)\s*$/i,
partialEndReg = /^(\s*(and|or)\s*\d+\s*)+$/i;
return function(groupe){
if(groupe.indexOf('(') > -1){
var subGroupe = [],
partialGroupe = [],
i = 0,
l = groupe.length,
incr = 0,
start = 0,
lastPartial;
for(; i < l; i++){
if(groupe[i] == '('){
if(!incr){
partialGroupe.push(groupe.slice(start, i));
start = i;
}
incr++;
}
if(groupe[i] == ')'){
incr--;
if(!incr){
subGroupe.push(groupe.slice(start + 1, i));
start = i + 1;
}
}
}
lastPartial = groupe.slice(start);
var i = 0,
l = subGroupe.length,
reg;
for(; i < l; i++){
if(!verifierFormeZone(subGroupe[i]))
return false;
if(partialGroupe[i]){
alert(partialGroupe[i]);
var reg = i ? partialMiddleReg : partialStartReg;
alert(reg);
alert(reg.test(partialGroupe[i]));
if(!reg.test(partialGroupe[i]))
return false;
}
}
return lastPartial ? partialEndReg.test(lastPartial) || false : true;
}
return groupeReg.test(groupe) || false;
}
}();
alert(verifierFormeZone(maChaine)); |
Partager