image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Carlos Souza
Carlos Souza19/05/2025 15:21
Compartir
WEX - End to End EngineeringRecomendado para tiWEX - End to End Engineering

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.

    Compartir
    Recomendado para ti
    TONNIE - Java and AI in Europe
    Microsoft - Azure Administrator Certification (AZ-104)
    WEX - End to End Engineering
    Comentarios (1)
    DIO Community
    DIO Community - 20/05/2025 13:27

    Carlos, seu artigo é um verdadeiro guia de bolso para quem precisa lidar com validação de documentos no Brasil! A forma direta como você explica o funcionamento da lógica dos dígitos verificadores torna o conteúdo acessível e extremamente útil tanto para iniciantes quanto para quem já está no dia a dia do desenvolvimento.

    Na DIO, valorizamos muito conteúdos como o seu, que combinam didática com aplicação prática e ajudam a resolver desafios reais do mercado. Validar CPF e CNPJ é uma tarefa comum, mas que ainda gera muitas dúvidas, e você entregou não só a solução, mas também o entendimento por trás dela, fortalecendo o domínio técnico da comunidade.

    Você pretende trazer também um exemplo em Kotlin futuramente?

    Recomendado para tiWEX - End to End Engineering