2008-11-14 7 views
40

J'ai besoin d'un modèle d'expression régulière pour n'accepter que des nombres entiers positifs. Il peut également accepter un seul zéro.Modèle Regex pour les valeurs numériques

Je ne veux pas accepter de nombres décimaux, de nombres négatifs et de nombres avec des zéros non significatifs.

Des suggestions?

Répondre

67
^(0|[1-9][0-9]*)$ 
+1

Devrait-il inclure une virgule optionnelle, au cas où le format le permettrait (comme 1 000 000)? – Ben

+5

Non, les virgules ne doivent pas être acceptées. –

+0

Cela ferait l'affaire:^(0 | [1-9] [0-9] * | [1-9] [0-9] {0,2} (, [0-9] {3,3}) *) $ –

3
/^0|[1-9]\d*$/ 
13

"[1-9][0-9]*|0"

Je venais d'utiliser "[0-9]+" pour représenter des nombres entiers positifs.

+1

si j'utilise grepl ("[0- 9] + "," 1111a ") dans R, cela me donne VRAI –

11

Cela permettra à des nombres décimaux (ou des nombres entiers) qui se font pas départ avec zéro:

^(([1-9]*)|(([1-9]*)\.([0-9]*)))$ 

Si vous souhaitez autoriser les numéros qui commencent avec zéro, vous pouvez faire:

^(([0-9]*)|(([0-9]*)\.([0-9]*)))$ 
Questions connexes