Carlos Souza
Carlos Souza19/05/2025 15:21
Compartilhe

Como Criar Validadores de CPF e CNPJ: Guia Prático para Qualquer Projeto

    Como Criar Validadores de CPF e CNPJ em Qualquer Projeto

    A validação de CPF e CNPJ é uma etapa fundamental em sistemas que envolvem dados pessoais ou empresariais no Brasil. Garantir que essas informações estejam corretas evita fraudes, melhora a integridade dos dados e proporciona uma melhor experiência para o usuário.

    Estrutura de CPF e CNPJ

    • CPF (Cadastro de Pessoa Física): 11 dígitos no formato XXX.XXX.XXX-XX, sendo os dois últimos os dígitos verificadores.
    • CNPJ (Cadastro Nacional de Pessoa Jurídica): 14 dígitos no formato XX.XXX.XXX/XXXX-XX.

    Ambos os documentos utilizam um algoritmo baseado em multiplicações e divisões para calcular os dígitos verificadores, que são fundamentais para validar sua autenticidade.

    Como funciona a validação?

    A ideia principal é:

    1. Ignorar formatação (. , / - ).
    2. Verificar se todos os dígitos são iguais (caso sim, é inválido).
    3. Calcular os dígitos verificadores.
    4. Comparar os resultados com os dois últimos dígitos do número original.

    Exemplo de Validador em JavaScript

    javascript
    CopiarEditar
    function validarCPF(cpf) {
    cpf = cpf.replace(/[^\d]+/g, '');
    if (cpf.length !== 11 || /^(\d)\1+$/.test(cpf)) return false;
    
    for (let t = 9; t < 11; t++) {
      let sum = 0;
      for (let i = 0; i < t; i++) {
        sum += parseInt(cpf[i]) * (t + 1 - i);
      }
      let digito = (sum * 10) % 11;
      if (digito === 10) digito = 0;
      if (digito !== parseInt(cpf[t])) return false;
    }
    return true;
    }
    
    function validarCNPJ(cnpj) {
    cnpj = cnpj.replace(/[^\d]+/g, '');
    if (cnpj.length !== 14 || /^(\d)\1+$/.test(cnpj)) return false;
    
    const validarDigito = (base, peso) => {
      let soma = 0;
      for (let i = 0; i < base.length; i++) {
        soma += parseInt(base[i]) * peso[i];
      }
      let resto = soma % 11;
      return resto < 2 ? 0 : 11 - resto;
    };
    
    const peso1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    const peso2 = [6, ...peso1];
    
    const dig1 = validarDigito(cnpj.slice(0, 12), peso1);
    const dig2 = validarDigito(cnpj.slice(0, 12) + dig1, peso2);
    
    return cnpj.endsWith(`${dig1}${dig2}`);
    }
    

    Boas Práticas

    • Sempre remova os caracteres não numéricos antes de validar.
    • Use bibliotecas como cpf-cnpj-validador em projetos maiores para evitar retrabalho.

    Conclusão

    Criar validadores de CPF e CNPJ é uma habilidade essencial para qualquer desenvolvedor que atua com sistemas no Brasil. Mesmo que existam bibliotecas prontas, entender a lógica por trás desses algoritmos ajuda na depuração, otimização e adaptação para diferentes contextos — seja web, mobile ou backend.

    Compartilhe
    Comentários (0)