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("881.499.606-78");
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();
}
}
}
Eu prefiro usar um matcher para CPF e outro para CNPJ.
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("881.499.606-78");
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}");
1 curtida
Grato. Resolvido.