Comment peut- ^\d+$
on améliorer pour interdire 0
?
EDIT (Rendez-le plus concret):
Des exemples pour permettre:
1
30
111 Des
exemples d'interdire:
0
00
-22
Peu importe si les nombres positifs avec un zéro non significatif sont autorisés ou non (par exemple 022
).
Ceci est pour l'implémentation Java JDK Regex.
076
,?Réponses:
Essaye ça:
... et un peu de remplissage pour dépasser la limite de réponse de 30 caractères SO :-).
Voici la démo
la source
^[1-9]+$
marcherait pas ?^[1-9]+$
ne permettrait pas 10^[1-9]+$
ne le permettrait pas10
. @Mulmoth la suggestion permettra1
, car\d*
correspond à zéro fois ou plus. Cependant, cela ne le permettra pas076
, car cela ne commence pas par un[1-9]
.01
?Désolé d'être arrivé en retard mais le PO veut autoriser
076
mais ne veut probablement PAS autoriser0000000000
.Donc, dans ce cas, nous voulons une chaîne d'un ou plusieurs chiffres contenant au moins un non nul . C'est
la source
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
mais c'est faire une hypothèse sur ce que vous entendez par «décimal». Avez-vous besoin de pièces d'exposant? C'est assez compliqué, alors posez une autre question.^0*[1-9]\d*$
puisque le premier[0-9]*
n'est actif que jusqu'à ce qu'il[1-9]
trouve le premier non nul, c'est-à-dire qu'il n'est actif que jusqu'à ce qu'il y ait des zéros initiaux (0*
).Vous pouvez essayer une assertion d'anticipation négative:
la source
Essayez celui-ci, celui-ci fonctionne le mieux pour répondre aux exigences.
Voici l'exemple de sortie
la source
[1-9]\d*
.^\d*[1-9]\d*$
cela peut inclure toutes les valeurs positives, même si elle est complétée par zéro à l'avant
Permet
1
01
dix
11 etc.
ne permettent pas
0
00
000 etc.
la source
Tout entier positif, à l'exclusion de 0:
^\+?[1-9]\d*$
Tout entier positif, y compris 0:
^(0|\+?[1-9]\d*)$
la source
J'ai celui-ci:
Quelqu'un le bat? :)
la source
00
Voulez-vous cela? Et cela permettra1aaaaa
etabcd01
.^
appartient uniquement à la première alternative et$
uniquement à la seconde, pour résoudre ce problème, mettez des crochets autour d'elle^([1-9]|[0-9]{2,})$
000000000
. Vous avez dit n'importe quel entier à l' exclusion de zéro .Juste pour le plaisir, une autre alternative utilisant les lookaheads:
Autant de chiffres que vous le souhaitez, mais au moins un doit l'être
[1-9]
.la source
Vous voudrez peut-être ceci (modifier: autoriser le numéro du formulaire
0123
):cependant, si c'était moi, je ferais plutôt
la source
Integer.parseInt()
lui - même ajoute très peu de frais généraux. C'est le lancement et la capture d'exceptions qui coûtent cher.\\+?
préfixes? Je suppose que c'est censé être un signe plus échappé tel qu'il apparaîtrait dans le code source Java, mais pourquoi? Si les signes moins ne sont pas autorisés, je pense qu'il est prudent de supposer que les signes plus sont également absents.Ce RegEx correspond à tout entier positif sur 0:
Il fonctionne avec deux regards 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).
la source
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 n'autorise pas les zéros non significatifs.
la source
^ [1-9] * $ est le plus simple auquel je puisse penser
la source
10
et29303
. Il correspondra également à une chaîne vide.Cela ne devrait autoriser que les décimales> 0
la source