Comment puis ^\d+$
être amélioré pour interdire 0
?
EDIT (Rendez-le plus concret):
Exemples à autoriser:
1
30
111
Exemples à interdire:
0
00
- 22
Peu importe que les nombres positifs précédés de zéro soient autorisés ou non (par exemple, 022
).
Ceci est pour Java JDK Regex.
Essaye ça:
^[1-9]\d*$
... et un remplissage supérieur à 30 caractères SO limite de réponse :-).
Désolé de rentrer tard mais le PO veut autoriser 076
mais ne veut probablement PAS autoriser 0000000000
.
Donc, dans ce cas, nous voulons un chaîne d'un ou plusieurs chiffres contenant au moins un différent de zéro. C'est
^[0-9]*[1-9][0-9]*$
Vous pouvez essayer une affirmation négative prévisible:
^(?!0+$)\d+$
Essayez celui-ci, celui-ci fonctionne mieux pour suffire à l'exigence.
[1-9][0-9]*
Voici l'exemple de sortie
String 0 matches regex: false
String 1 matches regex: true
String 2 matches regex: true
String 3 matches regex: true
String 4 matches regex: true
String 5 matches regex: true
String 6 matches regex: true
String 7 matches regex: true
String 8 matches regex: true
String 9 matches regex: true
String 10 matches regex: true
String 11 matches regex: true
String 12 matches regex: true
String 13 matches regex: true
String 14 matches regex: true
String 15 matches regex: true
String 16 matches regex: true
String 999 matches regex: true
String 2654 matches regex: true
String 25633 matches regex: true
String 254444 matches regex: true
String 0.1 matches regex: false
String 0.2 matches regex: false
String 0.3 matches regex: false
String -1 matches regex: false
String -2 matches regex: false
String -5 matches regex: false
String -6 matches regex: false
String -6.8 matches regex: false
String -9 matches regex: false
String -54 matches regex: false
String -29 matches regex: false
String 1000 matches regex: true
String 100000 matches regex: true
^\d*[1-9]\d*$
cela peut inclure toutes les valeurs positives, même si elle est complétée par un zéro à l'avant
Permet
1
01
dix
11 etc
ne permettent pas
00
000 etc.
J'ai eu celui-ci:
^[1-9]|[0-9]{2,}$
Quelqu'un le bat? :)
Vous voudrez peut-être ceci (edit: permettre numéro de la forme 0123
):
^\\+?[1-9]$|^\\+?\d+$
cependant, si c'était moi, je ferais plutôt
int x = Integer.parseInt(s)
if (x > 0) {...}
Juste pour le plaisir, une autre alternative à l'aide de lookaheads:
^(?=\d*[1-9])\d+$
Autant de chiffres que vous voulez, mais au moins un doit être [1-9]
.
Mon modèle est compliqué, mais il couvre exactement "Tout entier positif, à l'exclusion de 0" (1 - 2147483647, pas long). C'est pour les nombres décimaux et ne permet pas les zéros non significatifs.
^((1?[1-9][0-9]{0,8})|20[0-9]{8}|(21[0-3][0-9]{7})|(214[0-6][0-9]{6})
|(2147[0-3][0-9]{5})|(21474[0-7][0-9]{4})|(214748[0-2][0-9]{3})
|(2147483[0-5][0-9]{2})|(21474836[0-3][0-9])|(214748364[0-7]))$
Tout entier positif, à l'exclusion de 0: ^\+?[1-9]\d*$
Tout entier positif, y compris 0: ^(0|\+?[1-9]\d*)$
Ce RegEx correspond à tout positif sur 0:
(?<!-)(?<!\d)[1-9][0-9]*
Cela fonctionne avec deux types de recherche négatifs, qui recherchent un moins avant un nombre, ce qui indique qu'il s'agit d'un nombre négatif. Cela fonctionne également pour tout nombre négatif supérieur à -9 (par exemple -22).