Verificando se a mascara de uma String esta Ok!

Olá a todos.

Preciso que o usuario preencha um campo CPF, nele esta a mascara (###.###.###-##), ate ai ok.

O Problema é como faço para verificar se o cara digitou uma String de acordo com a mascara, por exemplo:

Se ele digitar: 111.111.111-11, esta Ok!
Agora se ele digitar 111.111 (está incompleto e não está de acordo com a mascara), dae o sistema acusava e pedia para digitar novamente.

Agradeço a atenção de todos.

Abraço!

Vê se ajuda:

[code]public class Teste {

public static final String MASCARA_CPF = "###.###.###-##";

public static void main(String[] args) {
    String cpf1 = "111.111.111-11";
    String cpf2 = "111.111";

    if (cpf1.length() != MASCARA_CPF.length()) {
        System.out.println("cpf1 invalido");
    }

    if (cpf2.length() != MASCARA_CPF.length()) {
        System.out.println("cpf2 invalido");
    }
}

}[/code]

T+

Ou usando regex

    public static void main(String[] args){
        Pattern p = Pattern.compile("[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}");
        Matcher m1 = p.matcher("000.196.440.27");
        Matcher m2 = p.matcher("000196.440-27");
        
        System.out.println(m1.matches());
        System.out.println(m2.matches());
    }

Você ainda pode deixar melhor essa expressão regular!!!

[quote=diego2005]Vê se ajuda:

[code]

    if (cpf1.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf1 invalido");
    }

    if (cpf2.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf2 invalido");
    }

}[/code]
Oracle??? :lol:

T+[/quote]

Olá, Diego.

Mas no caso seria abstraido isso ae… quando digo CPF:111.111.111-11, na verdade é qualquer CPF que ele digite, por exemplo:

Se o cara digitar 030.132.05 e clicar ok, o sistema tem q acusar, pois ele não preencheu todos os campos da mascara de um CPF.
Agora se ele digita 030.132.051-01 ai está correto, pois esta de acordo com a mascara que coloquei(###.###.###-##).

Entende?

Abraço!

MaskFormatter
Java Tutorial » Swing » JFromattedField MaskFormatter

[quote=MKThEbEsT]Olá, Diego.

Mas no caso seria abstraido isso ae… quando digo CPF:111.111.111-11, na verdade é qualquer CPF que ele digite, por exemplo:

Se o cara digitar 030.132.05 e clicar ok, o sistema tem q acusar, pois ele não preencheu todos os campos da mascara de um CPF.
Agora se ele digita 030.132.051-01 ai está correto, pois esta de acordo com a mascara que coloquei(###.###.###-##).

Entende?

Abraço![/quote]

Sim, eu entendi…apenas dei um exemplo básico pra você ter uma idéia de como fazer.

T+

[quote=thiago.correa][quote=diego2005]Vê se ajuda:

[code]

    if (cpf1.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf1 invalido");
    }

    if (cpf2.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf2 invalido");
    }

}[/code]
Oracle??? :lol:

T+[/quote][/quote]

Ãh?? Acho que não entendi…rssrsrsr

T+

[quote=diego2005][quote=thiago.correa][quote=diego2005]Vê se ajuda:

[code]

    if (cpf1.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf1 invalido");
    }

    if (cpf2.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf2 invalido");
    }

}[/code]
Oracle??? :lol:

T+[/quote][/quote]

Ãh?? Acho que não entendi…rssrsrsr

T+[/quote]

Só olha como você comparou a diferença :wink:

Opa! To vendo que vc tá querendo é verificar a máscara…

mas se precisar validar o CPF e outros tipos de documentos brasileiros use o Validador-BR:

http://code.google.com/p/validador-br/

Nós ainda vamos implementar umas coisas, mas já dá pra usar. Depois é só vc atualizar o jar sem perder compatibilidade.

[quote=thiago.correa][quote=diego2005][quote=thiago.correa][quote=diego2005]Vê se ajuda:

[code]

    if (cpf1.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf1 invalido");
    }

    if (cpf2.length() <> MASCARA_CPF.length()) {
        System.out.println("cpf2 invalido");
    }

}[/code]
Oracle??? :lol:

T+[/quote][/quote]

Ãh?? Acho que não entendi…rssrsrsr

T+[/quote]

Só olha como você comparou a diferença ;)[/quote]

kkkkkkk

Agora entendi…não é Oracle não, é Dephi…rssrsrsrsr

Que viagem a minha…

Opa, obrigado a todos pela ajuda ;D.

Agora uma duvida… caso quisesse criar uma expressão regular da seguinte forma:
-6 digitos(Sendo os 2 primeiros Letras e os 4 ultimos numeros).
EX:
AA1920
CZ2510
etc…

Pois usei da seguinte forma e não deu certo:

Pattern p = Pattern.compile("[A-Z]{2}\[0-9]{4}");

Abraço!

Resolvido!

Seria bom se voce mostrasse como resulveu seu problema
caso algum outro usuario tenha um problema parecido.

:idea:

 Opa pessoal eu gostaria de tirar uma dúvida meu caso é que tenho que receber um argumento de linha de comando do número de um telefone no formato (0xx)xxxx-xxxx. Porém ao trocar os números por letras o programa continua retornando True. Se alguém puder me ajudar eu agradeço.

[code]import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class VerificaDados {

public static void main(String[] args) {
	String tel = (String) args[0];
	String testa = "(0[0-9]{2})[0-9]{4}-[0-9]{4}";
	Pattern p = Pattern.compile(testa);
	Matcher m = p.matcher(tel);
	boolean b = m.matches();
	b = Pattern.matches(tel, testa);
	if (b = true){
		System.out.println("Certo");
	} else if (b = false){
		System.out.println("Errado");
	}
}

}[/code]

Vlw.