Como pode ^\d+$
ser melhorado para não permitir 0
?
EDITAR (tornar mais concreto):
Exemplos para permitir:
1
30
111
Exemplos para não permitir:
0
00
-22
Não importa se os números positivos com um zero à esquerda são permitidos ou não (por exemplo 022
).
Isso é para implementação Java JDK Regex.
076
,?Respostas:
Experimente isto:
... e algum preenchimento para exceder o limite de resposta de SO de 30 caracteres :-).
Aqui está a demonstração
fonte
^[1-9]+$
funcionaria?^[1-9]+$
não permitiria 10^[1-9]+$
não permitiria10
. @Mulmoth a sugestão permitirá1
, pois\d*
corresponde a zero ou mais vezes. No entanto, não permitirá076
, pois isso não começa com a[1-9]
.01
?Desculpe chegar atrasado, mas o OP deseja permitir,
076
mas provavelmente NÃO deseja permitir0000000000
.Portanto, neste caso, queremos uma string de um ou mais dígitos contendo pelo menos um diferente de zero . Isso é
fonte
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
mas isso é fazer uma suposição sobre o que você entende por "decimal". Você precisa de peças expoentes? Isso é muito complicado, então faça outra pergunta.^0*[1-9]\d*$
uma vez que o primeiro[0-9]*
está ativo apenas até[1-9]
encontrar o primeiro diferente de zero, ou seja, ele está ativo apenas até que haja zeros iniciais (0*
).Você pode tentar uma afirmação antecipada negativa:
fonte
Tente este, este funciona melhor para atender aos requisitos.
Aqui está o exemplo de saída
fonte
[1-9]\d*
.^\d*[1-9]\d*$
isso pode incluir todos os valores positivos, mesmo se for preenchido por Zero na frente
Permite
1
01
10
11 etc
não permita
0
00
000 etc.
fonte
Qualquer número inteiro positivo, excluindo 0:
^\+?[1-9]\d*$
qualquer número inteiro positivo, incluindo 0:
^(0|\+?[1-9]\d*)$
fonte
Peguei este:
Alguém o vence? :)
fonte
00
Você quer isso? E isso vai permitir1aaaaa
eabcd01
.^
pertence apenas à primeira alternativa e$
apenas à segunda, para resolver isso, coloque colchetes em torno dela^([1-9]|[0-9]{2,})$
000000000
. Você disse qualquer inteiro excluindo zero .Apenas por diversão, outra alternativa usando lookaheads:
Quantos dígitos você quiser, mas pelo menos um deve ter
[1-9]
.fonte
Você pode querer isso (editar: permitir número do formulário
0123
):no entanto, se fosse eu, eu faria
fonte
Integer.parseInt()
si adiciona muito pouca sobrecarga. É o lançamento e a captura de exceções que é caro.\\+?
prefixos? Suponho que seja um sinal de adição de escape, como apareceria no código-fonte Java, mas por quê? Se os sinais de menos não forem permitidos, acho que é seguro presumir que os sinais de mais também estão apagados.Este RegEx corresponde a qualquer número inteiro positivo de 0:
Funciona com dois lookbehinds negativos, que procuram um menos antes de um número, o que indica que é um número negativo. Também funciona para qualquer número negativo maior que -9 (por exemplo, -22).
fonte
Meu padrão é complicado, mas cobre exatamente "Qualquer número inteiro positivo, excluindo 0" (1 - 2147483647, não longo). É para números decimais e não permite zeros à esquerda.
fonte
^ [1-9] * $ é o mais simples que consigo pensar
fonte
10
e29303
. Ele também corresponderá a uma string vazia.Isso deve permitir apenas decimais> 0
fonte