Problema com expressão regular [resolvido]

4 respostas
D

Galera, eu estou tentendo validar um campo telefone, só que a minha expressão regular está dando erro.
esse é o código:

private boolean validoTelefone( String telefone ) {
        if(telefone.matches("^\(\d{2}\) \d{4}-\d{4}$") ) {
            return true;
        }
        else {
            JOptionPane.showMessageDialog(this, "Telefone inválido");
            return false;
        }
    }

o erro é :

ilegal escape character
ilegal escape character
ilegal escape character
ilegal escape character
ilegal escape character

aparece cinco vezes esse erro. Se alguem souber corrigir, eu agradeço.

4 Respostas

Vini_Fernandes

Cara, tente a seguinte expressao regular:

"\(\d{2}\)\d{4}-\d{4}"

veja o teste:

String telefone =  "([telefone removido]";
System.out.println(Pattern.matches("\(\d{2}\)\d{4}-\d{4}", telefone));

ate

D

Vini Fernandes, muito obrigado, deu certim.
Só me explica uma coisa, porque tem que colocar duas barras (\ ) e não só uma?

Vini_Fernandes

Porque faz parte da sintaxe do Java. O caracter barra “” deve ser representado por barra dupla. Tente fazer o seguinte:

System.out.println("imprimindo o caracter barra \");

voce tera um erro de compilacao, mas veja agora:

System.out.println("imprimindo o caracter barra \");

t+

D

ahhhhhffffff… que burro q eu sou, nem prestei atenção nisso… é verdade cara, para se ter uma barra no java tem que colocar duas

Criado 30 de outubro de 2010
Ultima resposta 30 de out. de 2010
Respostas 4
Participantes 2