import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class ValidaCNPJCPF {
public static void main(String[] args) {
try {
Pattern pattern = Pattern.compile("[CPF removido]");
Matcher matcher = pattern.matcher("([0-9]{2}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[-]?[0-9]{2})");
if (matcher.matches()) { // VALIDA FORMATAÇÃO DO CPF OU O CNPJ
System.out.println("SIM");
} else {
System.out.println("NAO");
}
} catch (PatternSyntaxException ex) {
ex.printStackTrace();
}
}
}
Regex formatação do CNPJ e CPF não funciona
V
3 Respostas
S
Eu prefiro usar um matcher para CPF e outro para CNPJ.
H
1 like
Não funciona porque vc inverteu as coisas.
Em Pattern.compile vc deve passar a expressão, e em pattern.matcher deve passar a string que será verificada. Ou seja:
Pattern pattern = Pattern.compile("([0-9]{2}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\\.]?[0-9]{3}[\\.]?[0-9]{3}[-]?[0-9]{2})");
Matcher matcher = pattern.matcher("[CPF removido]");
E outra coisa, não precisa de colchetes para o ponto, hífen e barra. Ou seja, pode ser apenas \\. em vez de [\\.] - o mesmo vale para a barra e o hífen. Aliás, o hífen também não precisa de \\ antes. E como ambos terminam com “hífen seguido de dois dígitos”, pode agrupar somente o início e no final coloque -?[0-9]{2} apenas uma vez. Ou seja:
Pattern pattern = Pattern.compile("([0-9]{2}\\.?[0-9]{3}\\.?[0-9]{3}\\/?[0-9]{4}|[0-9]{3}\\.?[0-9]{3}\\.?[0-9]{3})-?[0-9]{2}");
V
Grato. Resolvido.
Criado 12 de março de 2023
Ultima resposta 14 de mar. de 2023
Respostas 3
Participantes 3
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Guia pratico de TypeScript: Melhore suas aplicacoes... Por Thiago da Silva Adriano — Casa do Codigo