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
...
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?
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.