cnpjcpf.
Código · C#

Validar CPF em C#

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.

O método

C#
using System.Text.RegularExpressions;

public static class Doc {
    public static bool IsValidCpf(string cpf) {
        cpf = Regex.Replace(cpf, @"\D", "");
        if (cpf.Length != 11 || Regex.IsMatch(cpf, @"^(\d)\1{10}$")) return false;
        for (int i = 9; i < 11; i++) {
            int soma = 0;
            for (int j = 0; j < i; j++) soma += (cpf[j] - '0') * ((i + 1) - j);
            int dv = (soma * 10 % 11) % 10;
            if (dv != cpf[i] - '0') return false;
        }
        return true;
    }
}

Doc.IsValidCpf("111.444.777-35"); // true
Doc.IsValidCpf("111.444.777-00"); // false

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 Regex.Replace(cpf, @"\D", "") remove qualquer pontuação antes de começar.

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.
  • Sequências repetidas (11111111111) passariam no módulo 11, por isso o método as descarta antes com ^(\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, em string) e formate só na exibição.

Continue

Código em C# verificado (casos válidos e inválidos). Algoritmo módulo 11 oficial. Revisado em 06/2026.