Qual è la regex per “Qualsiasi numero intero positivo, escluso 0”

Come può ^\d+$ essere migliorato per disabilitare 0 ?

EDIT (renderlo più concreto):

Esempi per consentire:
1
30
111
Esempi da non consentire:
0
00
-22

Non importa se i numeri positivi con uno zero iniziale sono consentiti o meno (ad es. 022 ).

Questo è per l’implementazione Java JDK Regex.

Prova questo:

 ^[1-9]\d*$ 

… e un po ‘di padding per superare il limite di 30 caratteri SO: :-).

Mi dispiace arrivare tardi ma l’OP vuole consentire 076 ma probabilmente NON vuole consentire 0000000000 .

Quindi in questo caso vogliamo una stringa di una o più cifre contenenti almeno un non zero . Questo è

 ^[0-9]*[1-9][0-9]*$ 

Potresti provare un’asserzione di lookahead negativo:

 ^(?!0+$)\d+$ 

^\d*[1-9]\d*$

questo può includere tutti i valori positivi, anche se è riempito da Zero nella parte anteriore

permette

1

01

10

11 ecc

non permettere

0

00

000 ecc.

Ho ottenuto questo:

 ^[1-9]|[0-9]{2,}$ 

Qualcuno lo batte? 🙂

Potresti volere questo (modifica: consenti il ​​numero del modulo 0123 ):

 ^\\+?[1-9]$|^\\+?\d+$ 

tuttavia, se fossi in me, lo farei invece

 int x = Integer.parseInt(s) if (x > 0) {...} 

Prova questo, questo funziona meglio per soddisfare il requisito.

 [1-9][0-9]* 

Ecco l’output del campione

 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 

Solo per divertimento, un’altra alternativa con lookaheads:

 ^(?=\d*[1-9])\d+$ 

Il numero di cifre che vuoi, ma almeno uno deve essere [1-9] .

^ [1-9] * $ è il più semplice a cui possa pensare

Questo dovrebbe consentire solo decimali> 0

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