Skip to content

Instantly share code, notes, and snippets.

@maxjf1
Created December 2, 2016 12:40
Show Gist options
  • Save maxjf1/ea7c7021b681cecb6fe19d6df748ee5d to your computer and use it in GitHub Desktop.
Save maxjf1/ea7c7021b681cecb6fe19d6df748ee5d to your computer and use it in GitHub Desktop.
//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