2010-03-30 11 views
2

Je veux une expression régulière pour accepter seulement 0-9999Expression régulière pour accepter les numéros 0 à 9999

Pas d'espace, pas de lettres. Cependant, "vide" (vide) est autorisé.

+3

Pourquoi utilisez-vous reg.ex pour vérifier un nombre? –

+0

Un bon site pour tester votre regex: http://regexpal.com/ – karlipoppins

+0

@Frederik Wordenskjold: Parce que tout le monde n'aime pas utiliser le marteau 'int.TryParse' :) – leppie

Répondre

8
\d?\d?\d?\d? 

Cela devrait se faire.

Ou plus succinctement:

\d{0, 4} 

Cela fonctionne parce que vous dites "0, 1, 2 ou 3 chiffres", où chaque chiffre est 0-9. Cela permet des nombres entre 0 et 9999, et rien d'autre.

Notez qu'il autorise les zéros en tête, c'est-à-dire que 0004 est un nombre valide.

+0

Semble autoriser un espace – Coolcoder

+0

@Coolcoder: vous restreignez être la chaîne entière (c.-à-d. avec la chaîne de début et les symboles de chaîne de fin)? –

+0

Pas d'espaces, période. Pas au début, pas à la fin, pas au milieu. Juste un espace seul n'est pas autorisé. Cependant, "vide" (aucune valeur) est correct :) – Coolcoder

7

Cela devrait fonctionner:

[0-9]{0,4} 
7

bien, /\d{0,4}/ est le contrôle

4

façon la plus simple, mais en général je convertir en nombre et ne limite En supposant que vous ne voulez pas accepter les numéros gauche rembourré avec des zéros.

(0|([1-9]\d{0,3}))? 

Lire zéro ou une des opérations suivantes: 0 ou 1 à 9 suivi d'une chaîne de 0 à 3 chiffres.

+0

Semble autoriser un espace – Coolcoder

+0

Ne doit pas correspondre du tout à un espace car aucun espace n'existe dans l'expression. Selon la façon dont vous l'utilisez, vous devrez peut-être ajouter des caractères correspondants pour le début et la fin de la chaîne: '^ (0 | ([1-9] \ d {0,3}))? $' – tvanfosson

Questions connexes