Regex - Validação de digitos numéricos

Bom dia!!!
Pessoal, como eu poderia montar uma Regex para validar se a String possui somente digitos numéricos de 0 a 9??? Com tamanho mínimo de X digitos e máximo de Y digitos?
Eu fiz assim mas está bugando!!!

...
Pattern p = Pattern.compile("[0-9]");
Matcher m = p.matcher( numericParameter );
if ( !m.matches() )
   // Lança exception
...

VlW!!!

Onde está o X e o Y no seu pattern?

Não está :lol:
Esta condição é para já saber montar a regex caso eu venha precisar limitar o tamanho da String também…

E qual é o bug?

A sua expressão regular bate apenas com as seguintes strings, que têm apenas um dígito:

0 1 2 3 4 5 6 7 8 9

Não bate com mais nada.

Ops, o retorno é false.
Vou corrigir o código do exemplo pra vc ver.

Em um caso eu quero poder digitar 1 ou 12345 ou 12300456789 mas não necessariamente nesta ordem, como se fosse o ID de alguma produto.
Em outro caso eu quero digitar 1 ou 40 ou 26 como se fosse a quantidade de alguma coisa (neste caso não poderia ser digitado somente 0).
Melhorou?

Amigão … pode ter um geito melhor …

más sem testar e rapidamente …

[code]String valor = “123456”;

System.out.println(valor.matches("[0-9]{"+ valor.length() +"}"));[/code]

Acho que funciona … se não funcionar … avisa.

1 curtida

Ah, entendi. De qualquer maneira, leia o manual de expressões regulares do Aurélio Jargas ( http://aurelio.net/er/ ) para você não ficar dependendo de uma resposta de alguém do fórum que está com dificuldade de entender o que você quer.

Se você quer bater sua expressão com números de 3 a 9 algarismos, você usaria:

“\d{3,9}”

Uma coisa que é difícil fazer com expressões regulares é você indicar com o que você NÃO QUER QUE BATA (no seu caso, o valor 0). É possível fazer isso, mas muito complicado de manter. Em vez disso, separe esses valores via código Java mesmo, que é mais fácil que tentar indicá-los na expressão regular. (converta o número e se der zero, então não é um valor válido para você).
Ou então, use 2 expressões - uma que bate com as coisas que você quer, e outra que bate com as coisas que você não quer. Isso é mais ou menos simples de fazer.

Por exemplo, para bater com alguma coisa cujo valor é zero (como “0”, “000”, “00000” ou sei lá o quê) você precisa indicar que não quer algo como “0+” (expressão regular que indica 1 ou mais dígitos zero.)

passei aqui so para agradecer pelo links, realmente legal, bao eh o testador online com regex ehehe, como entanglement tem hora que dar um nó com regex.