J'ai besoin d'une expression régulière qui nécessite au moins UN chiffre et SIX au maximum.
J'ai travaillé là-dessus, mais aucune des deux ne semble fonctionner.
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
Une autre suggestion ?
J'ai besoin d'une expression régulière qui nécessite au moins UN chiffre et SIX au maximum.
J'ai travaillé là-dessus, mais aucune des deux ne semble fonctionner.
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
Une autre suggestion ?
Vous pouvez utiliser le quantificateur de plage {min,max}
pour spécifier un minimum de 1 chiffre et un maximum de 6 chiffres comme :
^[0-9]{1,6}$
Explication :
^ : Start anchor
[0-9] : Character class to match one of the 10 digits
{1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
$ : End anchor
Pourquoi votre regex n'a-t-elle pas fonctionné ?
Vous étiez presque proche sur le regex :
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
Puisque vous avez échappé à la ?
en le faisant précéder de la touche \
le ?
n'agissait plus comme un méta-caractère de regex ( pour 0
o 1
répétitions) mais était traité de manière littérale.
Pour le réparer, il suffit de retirer le \
et vous êtes là.
La regex basée sur les quantificateurs est plus courte, plus lisible et peut facilement être étendue à un nombre quelconque de chiffres.
Votre deuxième regex :
^[0-999999]$
est équivalent à :
^[0-9]$
qui correspond aux chaînes de caractères comportant exactement un chiffre. Ils sont équivalents car une classe de caractères [aaaab]
est identique à [ab]
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.