cnpjcpf.
Código · Java

Validar CPF em Java

Método sem dependências que valida um CPF pelo módulo 11: limpa a pontuação, descarta sequências repetidas e confere os dois dígitos verificadores. Copie e use.

A função

Java
import java.util.regex.Pattern;

public final class Doc {
    public static boolean isValidCpf(String cpf) {
        cpf = cpf.replaceAll("\\D", "");
        if (cpf.length() != 11 || cpf.matches("(\\d)\\1{10}")) return false;
        for (int i = 9; i < 11; i++) {
            int soma = 0;
            for (int j = 0; j < i; j++) soma += (cpf.charAt(j) - '0') * ((i + 1) - j);
            int dv = (soma * 10 % 11) % 10;
            if (dv != cpf.charAt(i) - '0') return false;
        }
        return true;
    }
}

O cálculo é o do módulo 11: cada dígito é multiplicado por um peso decrescente, somado, e o resto da divisão por 11 define o verificador. O laço roda duas vezes — uma para cada dígito verificador.

Como usar

Java
Doc.isValidCpf("111.444.777-35"); // true
Doc.isValidCpf("111.444.777-00"); // false
Doc.isValidCpf("11111111111");    // false (repetidos)

O método já aceita o CPF com ou sem máscara: o replaceAll("\\D", "") remove tudo que não for dígito antes de calcular.

publicidade

Cuidados

  • Regex só valida formato. Um padrão como \d{11} confirma que são 11 dígitos, mas não confere o verificador — quem faz isso é o método acima. Veja regex de CPF e CNPJ.
  • Sequências repetidas (11111111111) passariam no módulo 11, por isso o método as descarta antes com cpf.matches("(\\d)\\1{10}").
  • Válido ≠ existe. O método confirma a consistência matemática, não se o CPF foi emitido a alguém.
  • Guarde sem máscara (só os 11 dígitos) e formate só na exibição.

Continue

Perguntas frequentes

Como validar um CPF em Java sem biblioteca?
Com um método estático que limpa a pontuação com replaceAll("\\D", ""), descarta sequências repetidas e confere os dois dígitos verificadores pelo módulo 11. Usa só java.util.regex.
Por que rejeitar 11111111111?
Sequências repetidas passam no cálculo do módulo 11, mas não são CPFs válidos. A função as descarta antes com cpf.matches("(\\d)\\1{10}").
O CPF validado existe de fato?
Não. A função confere a consistência matemática (os verificadores), não se o CPF foi emitido a alguém pela Receita Federal.
Código em Java verificado. Algoritmo módulo 11 oficial. Revisado em 06/2026.