REGEX . Liste des pages à imprimer

Résolu
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
- 25 juin 2008 à 12:32
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
- 25 juin 2008 à 16:27
Bonjour,

j'essaye vainement de créer un pattern pour un regex Pouvez vous m'aider ?

But : vérifier qu'une chaine ressemble à ce que l'on peut saisir dans la textbox "Pages" de Word. En clair qq chose du style :
   - 1
   - 1-10
   - 1-10;2
   -1-10;15-20
   -1;3;5;15-18
   -1;3;5;15-18;20
   - ...

La différence avec Word est que j'aimerai que ma chaine se termine obligatoirement par un nombre
Ex : 
   - 1;3;5- => interdit
   - 1;3;5-10 => OK

Précision :
   - début : un chiffre obligatoirement (différent de 0) => 0;12 => Interdit
   - fin :  : un chiffre obligatoirement (différent de 0)   =>12;0 => Interdit

J'ai écris ça :  pattern = @"^((\d+[;|\-]{1}\d+)|(\d){1})*$"; mais cette expression ne m'interdit pas "1-12-3"

DT
A voir également:

6 réponses

SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
67
25 juin 2008 à 14:24
Hello,

Si tu dois travailler avec des regex, télécharge et utilise Expresso, c'est gratuit, et tu peux construi et tester tes regex.

Je pense pour ton problème que
^[1-9]\d*(-[1-9]\d*)?(;[1-9]\d*(-[1-9]\d*)?)*$
devrait fonctionner, essaie.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
67
25 juin 2008 à 15:29
La manière dont tu as modifié, ça ne marchera pas non plus, car il acceptera un 0 seul.

Avec la suivante, on oblige à avoir au moins un chifrre différent de 0

^\d*[1-9]\d*(-\d*[1-9]\d*)?(;\d*[1-9]\d*(-\d*[1-9]\d*)?)*$

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

25 juin 2008 à 14:45
Merci beaucoup pour ce pattern...

je rencontre juste un petit problème lorsque le premier nombre vaut "012" par exemple (dans mon cas c'est le "0" significatif qui m'interesse et qui doit être interdit).

j'ai donc modifié ton pattern comme ceci et je testerai ensuite la première valeur (à moins qu'il existe une autre manière)
^\d+(-[1-9]\d*)?(;[1-9]\d*(-[1-9]\d*)?)*$

En tous les cas merci beaucoup pour ton aide

DT
0
SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
67
25 juin 2008 à 15:00
Hello,

Tu veux accepter ou refuser 012 ? Je n'ai pas bien compris.

Mon pattern le refuse pour le moment.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

25 juin 2008 à 15:07
je dois refuser le "0;..." mais accèpter le "012;...". En clair, je ne peux pas sélectionner la page 0 mais je peux accepter que l'utilisateur saisisse 012
DT
0
babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

25 juin 2008 à 16:27
rien à redire ...

DT
0