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

6 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
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 69
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 69
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
Rejoignez-nous