Bonjour,
Après une longue Quelqu'un a suggéré l'utilisation de ce code :
pour verifier si l'utilisateur saisi la bonne forme ds la zone...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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));
parmis les forme acceptable on a : (1 and 2) or 3 , (1 and (2 or 3) and 4), 1 and 2 or 3........
tt marche bien mais avec un petit problem il accepte aussi la forme :
(1 and 2)(3 or 4) mais cette forme fausse
je pense le problem ds le regex :
merci de m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2partialMiddleReg = /^((and|or)\s*\d+)*\s*(and|or)\s*$/i,
Partager