Javascript para Validar CPF
No desenvolvimento de aplicações Web muitas vezes no deparamos com a existência de um campo de CPF cujo valor precisa ser validado no momento da submissão do form.
Neste breve tutorial vamos mostrar como desenvolver uma função em javascript com este propósito.
Vale ressaltar que a validação é realizada de acordo com o algoritmo do CPF o que significa que um número válido não necessariamente é um número existente e com situação cadastral regular perante a Receita Federal. Para conferir se um CPF existe, qual o nome da respectiva pessoa e sua situação cadastral atual, consulte o site oficial da Receita Federal do Brasil.
Vamos a função e em seguida uma análise rápida do código:
function validarCPF(cpf) { cpf = cpf.replace(/[^\d]+/g,''); if(cpf == '') return false; // Elimina CPFs invalidos conhecidos if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999") return false; // Valida 1o digito add = 0; for (i=0; i < 9; i ++) add += parseInt(cpf.charAt(i)) * (10 - i); rev = 11 - (add % 11); if (rev == 10 || rev == 11) rev = 0; if (rev != parseInt(cpf.charAt(9))) return false; // Valida 2o digito add = 0; for (i = 0; i < 10; i ++) add += parseInt(cpf.charAt(i)) * (11 - i); rev = 11 - (add % 11); if (rev == 10 || rev == 11) rev = 0; if (rev != parseInt(cpf.charAt(10))) return false; return true; }
Na linha 2, removemos todos os caracteres não númericos do CPF passado como parâmetro, eliminando uma possível máscara.
O condicional if da linha 5 verifica se número de dígitos da string já limpa é igual a 11 e checa por valores iguais. Esta verificação é necessária uma vez que se aplicarmos o algoritmo do CPF sobre o número "111.111.111-11" teoricamente os dígitos verificadores estão corretos, mas este NÃO é um número válido.
As linha 17 à 25 verificam se o primeiro dígito verificador é válido de acordo com o algoritmo do CPF. Caso negativo, a validação já retorna false encerrando a função.
Já as linha 26 à 34 verificam se o segundo dígito verificador é válido.
Caso o algoritmo alcance a linha 35 temos um CPF válido e o boolean true é retornado.
Simples não? Você pode ver uma demonstração desta função em execução na página do validador de CPF aqui do site. Se você quiser testar seu script após sua implementação, utilize nossa página principal para gerar cpf's válidos.