Created
December 2, 2016 12:40
-
-
Save maxjf1/ea7c7021b681cecb6fe19d6df748ee5d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//inspirado em https://gist.github.com/pabloprogramador/6331013 (php) | |
/** | |
* remove todos os digitos que não são numeros | |
* @param string/int | |
* @return bool | |
*/ | |
function parse_number(val) { | |
val = (val || '') + ''; | |
return val.replace(/\D/g, ""); | |
} | |
/** | |
* Verifica se o CPF informado é valido | |
* @param string/int | |
* @return bool | |
*/ | |
function valid_cpf (cpf) { | |
//Valida entrada (para string) | |
cpf = (cpf || '')+ ''; | |
// Mantém apenas dígitos | |
cpf = parse_number(cpf); | |
// Verifica tamanho da string e se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso | |
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; | |
} else { | |
// Calcula os números para verificar se o CPF é verdadeiro | |
for (var t = 9; t < 11; t++) { | |
for (var d = 0, c = 0; c < t; c++) { | |
d += cpf[c] * ((t + 1) - c); | |
} | |
d = ((10 * d) % 11) % 10; | |
if (cpf[c] != d) { | |
return false; | |
} | |
} | |
return true; | |
} | |
}; | |
function valid_cnpj (str) { | |
//Valida entrada | |
str = (str || '')+ ''; | |
// Mantém apenas dígitos | |
str = parse_number(str); | |
//verifica tamanho | |
if (str.length != 14) return false; | |
var soma1 = | |
(str[0] * 5) + | |
(str[1] * 4) + | |
(str[2] * 3) + | |
(str[3] * 2) + | |
(str[4] * 9) + | |
(str[5] * 8) + | |
(str[6] * 7) + | |
(str[7] * 6) + | |
(str[8] * 5) + | |
(str[9] * 4) + | |
(str[10] * 3) + | |
(str[11] * 2); | |
var resto = soma1 % 11; | |
var digito1 = resto < 2 ? 0 : 11 - resto; | |
var soma2 = | |
(str[0] * 6) + | |
(str[1] * 5) + | |
(str[2] * 4) + | |
(str[3] * 3) + | |
(str[4] * 2) + | |
(str[5] * 9) + | |
(str[6] * 8) + | |
(str[7] * 7) + | |
(str[8] * 6) + | |
(str[9] * 5) + | |
(str[10] * 4) + | |
(str[11] * 3) + | |
(str[12] * 2); | |
resto = soma2 % 11; | |
var digito2 = resto < 2 ? 0 : 11 - resto; | |
return ((str[12] == digito1) && (str[13] == digito2)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment