UNPKG

validator-brazil

Version:
90 lines (75 loc) 2.19 kB
var regex = /[\.\-\/]+/g; module.exports.isCnpj = function(cnpj) { cnpj = cnpj.replace(regex, ""); if (cnpj == "") return false; if (cnpj.length != 14) return false; if ( cnpj == "00000000000000" || cnpj == "11111111111111" || cnpj == "22222222222222" || cnpj == "33333333333333" || cnpj == "44444444444444" || cnpj == "55555555555555" || cnpj == "66666666666666" || cnpj == "77777777777777" || cnpj == "88888888888888" || cnpj == "99999999999999" ) return false; var size = cnpj.length - 2; var numbers = cnpj.substring(0, size); var digits = cnpj.substring(size); var sum = 0; var pos = size - 7; for (var i = size; i >= 1; i--) { sum += numbers.charAt(size - i) * pos--; if (pos < 2) pos = 9; } var result = sum % 11 < 2 ? 0 : 11 - (sum % 11); if (result != digits.charAt(0)) return false; size = size + 1; numbers = cnpj.substring(0, size); sum = 0; pos = size - 7; for (var i = size; i >= 1; i--) { sum += numbers.charAt(size - i) * pos--; if (pos < 2) pos = 9; } result = sum % 11 < 2 ? 0 : 11 - (sum % 11); if (result != digits.charAt(1)) return false; return true; }; module.exports.isCpf = function(cpf) { cpf = cpf.replace(regex, ""); if (cpf == "") return false; 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; var add = 0; for (var i = 0; i < 9; i++) add += parseInt(cpf.charAt(i)) * (10 - i); var rev = 11 - (add % 11); if (rev == 10 || rev == 11) rev = 0; if (rev != parseInt(cpf.charAt(9))) return false; add = 0; for (var 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; }; module.exports.isCep = function(cep) { cep = cep.replace(regex, ""); var cepRegex = /^[0-9]{8}$/g; return cepRegex.test(cep); };