Boa tarde a todos
meu primeiro post no forum, sou novo aqui, entao se fizer algo errado me corrijam fazendo um favor…
Tenho que fazer uma aplicaçao para validar campos…
ate ai tranquilo, mas cheguei na seguinte parte, preciso vereficar se um campo é alfanumerico, ja pesquisei na internet e no forum, nao encontrei algo que solucionasse meu problema por isso estou criando o topico.
Para validar campos numerico consegui de certo modo facil, so tem um porem, digamos que esse campo venha em branco, ai acontece um erro, por q nao consegui tratar isso, se ele vem preenchido com numeros esta ok, se vem com letras e numero esta errado…
vou postar logo o codigo e ver se alguem ai consegue me ajudar… estou iniciando com esses negocios de expressoes regulares por isso a dificuldade.
[b]Resumindo:
preciso validar um campo numerico, e ignorar os espaços se por acaso ele vier sem nenhum valor no caso
preciso validar outro campo alfanumerico, e ignorar os espaços assim como o caso do campo numerico q citei acima.[/b]
Segue o codigo:
public static void main(String[] args){
String teste = "11Av. Senador Atilio Fontana, 591 e 00704 Efapi 85525000Roberto Pocai 004632268000";
Pattern pattern = Pattern.compile("[0-9[\s]]*");
Matcher matcher = pattern.matcher(teste.substring(0,2));
Pattern pattern2 = Pattern.compile("[a-zA-Z[0-9][\s][,.]]*");
Matcher matcher2 = pattern2.matcher(teste.substring(2,36));
if (matcher.matches()) {
System.out.println(matcher.group() + " (Certo - Valor numerico)");
}else {
System.out.println("(Errado - So é permitido Valor numerico)");
}
if (matcher2.matches()) {
System.out.println(matcher2.group() + " (Certo - Valor Alfanumerico)");
}else {
System.out.println("(Errado - So é permitido Valor Alfanumerico)");
}
}
}
Fico no aguardo
Se não quer verificar a obrigatoriedade do campo é só tirar as {} depois da expressão.
Quantifier Range
{m,n} Must occur at least m times, but not more than n times.
{n,} Must occur at least n times.
{n} Must occur exactly n times.
- Must occur 0 or more times (same as {0,}).
- Must occur 1 or more times (same as {1,}).
? Must occur 0 or 1 time (same as {0,1}).
http://tools.lymas.com.br/regexp_br.php#
Cara, se eu entendi teu problema, a solução é usar o método find() da classe Matcher…
Abs.
aluisiodsv, sim isso eu ja resolvi é so colocar o * no lugar das chaves q tenho ali
Lucas, poderia colocar um exemplo para eu olhar?
Dando mais uma pesquisa na net achei esse link
http://www.vaniomeurer.com.br/tag/matcher/
que ajudou a resolver o problema do espaço… no caso do valor numerico
Ficou assim o codigo agora:
public static void main(String[] args){
String teste = "11Av. Senador Atilio Fontana, 591 e 00704 Efapi 85525000Roberto Pocai 004632268000";
Pattern pattern = Pattern.compile("[0-9[\s]]*"); //encontra numero e espaço, deu certo.
Matcher matcher = pattern.matcher(teste.substring(0,2));
Pattern pattern2 = Pattern.compile("[a-zA-Z[0-9][\s]]*");// procura por numero, alfabeto, espaço, so falta o problema com a virgula e o ponto.
Matcher matcher2 = pattern2.matcher(teste.substring(2,36));
if (matcher.matches()) {
System.out.println(matcher.group() + " (Certo - Valor numerico)");
}else {
System.out.println("(Errado - So é permitido Valor numerico)");
}
if (matcher2.matches()) {
System.out.println(matcher2.group() + " (Certo - Valor Alfanumerico)");
}else {
System.out.println("(Errado - So é permitido Valor Alfanumerico)");
}
}
ao invés do * use o +… o + não aceita vazio, o * aceita.
maior_abandonado, obrigado pela dica
Ja ja estou saindo do trampo, amanha eu retorno pra pedir mais ajuda
Preciso aceitar na validaçao do campo alfanumerico, virgula e ponto, q por enquanto nao deu certo
[quote=Romariocco]maior_abandonado, obrigado pela dica
Ja ja estou saindo do trampo, amanha eu retorno pra pedir mais ajuda
Preciso aceitar na validaçao do campo alfanumerico, virgula e ponto, q por enquanto nao deu certo[/quote]
testa com o [:punct:]
veja, http://pt.wikipedia.org/wiki/Expressão_regular
tentei da maneira q vc falou e nao funcionou ai fiz direto e deu certo.
Assim:
Pattern pattern2 = Pattern.compile("[a-zA-Z[0-9][\s][,][.]]*");
Obrigado pela ajuda ai pessoal
podem fechar o topico
Edita seu primeiro post e coloca resolvido ^^