web-dev-qa-db-fra.com

Expression régulière à 6 chiffres

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?

49
framara

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à.

Voir le sur rubulaire .

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].

116
codaddict
  ^\d{1,6}$

....................

21
LukeH

Tu pourrais essayer

^[0-9]{1,6}$

ça devrait marcher.

11
James

^[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 .

4
eckes