export function validateCpf(cpf: string): boolean { if (!cpf) { return false } cpf = String(cpf) // Testando pra ver se veio lixo if (cpf.search(/\.|\-/g) > 0 && cpf.length > 14) { return false // COM máscara } if (cpf.search(/\.|\-/g) < 0 && cpf.length > 11) { return false // SEM máscara } // Removendo a máscara. cpf = cpf .trim() .replace(/(\.|\-)/g, '') .substr(0, 11) // Elimina CPFs invalidos conhecidos. if ( cpf == '00000000000' || cpf == '11111111111' || cpf == '22222222222' || cpf == '33333333333' || cpf == '44444444444' || cpf == '55555555555' || cpf == '66666666666' || cpf == '77777777777' || cpf == '88888888888' || cpf == '99999999999' ) { return false } // Elimina CPFs invalidos conhecidos. let add = 0 let rev = 0 let i = 0 // 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 1o digito. // 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 } // Valida 2o digito. return true }