Falae galera beleza?
Estou estudando regex e estou com problema para implementar um validador de data.
Queria validar no formato XX\XX\XXXX mais não consigo por \ já tentei scape e nada… então coloquei -
Outra coisa seria como faria no mês o mes só pode começar com 0 e 1 porem se for 1 o segundo s´´o pode ir até 2
como faria isso?
Abaixo meu codigo
public class Validacao {
public String validarData(String data){
if( data.matches("[0-3]\d-[0-9]\d-[1-2]\d{3}") == true ){
return data;
}else{
return "Data Inválida!";
}
}
}
obrigado!
Pra validar um \ você precisa de \\.
Isso porque se você colocar só um, o compilador java verá a string com scape inválido. Se colocar 2 o engine da regex vai enxergar só um( pq o compilador usou o outro como escape). Enxergando só um \ o engine da regex vai lançar exceção pq esse é um caractere reservado nas expressões regulares.
Pra validar data, eu usaria algo como ;
" (0[1-9]|[1-9]|1[0-9]|2[0-9]|3[0-1])" //valida um dia começando com 0 ou não, seguiindo essa ideia você consegue validar o mês sozinho.
Não testei mas a ideia é essa.
Só uma perguntinha - o formato de datas normalmente é com “/” (sinal de trânsito indicando “declive”), não com “” (que indica “aclive”). Nunca vi um formato com “”.
Você não está com problemas de digitar o “/”? Se estiver usando um notebook, use o Alt direito e a tecla Q.
[quote=entanglement]Só uma perguntinha - o formato de datas normalmente é com “/” (sinal de trânsito indicando “declive”), não com “” (que indica “aclive”). Nunca vi um formato com “”.
Você não está com problemas de digitar o “/”? Se estiver usando um notebook, use o Alt direito e a tecla Q.
[/quote]
Opa mano, o objetivo msm é entender a parada.
Abraço!!
rod.attack acho que entendi mais não to conseguindo fazer funcionar
separei em linhas para ficar mais legivel
0[1-9]|1[0-9]|2[0-9]|3[0-1] // Testa se o dia é 0 (1até9) ou 1(0até9) ou ...
\/ // poe uma barra ( / ) , (agora a barra certa)
0[1-9]|1[0-2] // Testa o mes 0(1até9) ou 1(0até2)
\/ // poe uma barra ( / ) , (agora a barra certa)
[1-2]\d{3} //Testa se é 1 ou 2 seguido de 3 digitos
Tá dando erro ainda ele não reconhece 10/10/2010 =/
Vou continuar testando aqui, se alguem puder ajudar!! agradeço!!