J'ai besoin d'une expression régulière qui nécessite au moins UN chiffre et SIX maximum.
J'ai résolu le problème, mais aucun d'entre eux 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}
spécifier un minimum de 1 chiffre et un maximum de 6 chiffres comme suit:
^[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 expression rationnelle ne fonctionne-t-elle pas?
Vous étiez presque sur la regex:
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
Depuis que tu as échappé à la ?
en le précédant du \
, le ?
n'était plus un méta-caractère regex (pour 0
ou 1
_ répétitions) mais était traité littéralement.
Pour résoudre ce problème, il suffit de retirer le \
et vous êtes là.
Le regex basé sur le quantificateur est plus court, plus lisible et peut facilement être étendu à n’importe quel nombre de chiffres.
Votre deuxième regex:
^[0-999999]$
est équivalent à:
^[0-9]$
qui correspond aux chaînes avec exactement un chiffre. Ils sont équivalents car une classe de caractères [aaaab]
est identique à [ab]
.
^\d{1,6}$
....................
Tu pourrais essayer
^[0-9]{1,6}$
ça devrait marcher.
^[0-9]{1,6}$
devrait le faire. Je ne connais pas assez VB.NET pour savoir si c'est la même chose ici.
Pour des exemples, regardez le Wikipedia .