@mquiuqui/doc-validator
Version:
Validador de documentos brasileiros (CPF, CNPJ, etc)
21 lines (20 loc) • 845 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidCPF = isValidCPF;
exports.formatCPF = formatCPF;
function isValidCPF(cpf) {
cpf = cpf.replace(/[^\d]+/g, '');
if (cpf.length !== 11 || /^(\d)\1+$/.test(cpf))
return false;
const calcCheckDigit = (base, factor) => base.split('').reduce((sum, digit) => sum + parseInt(digit) * factor--, 0);
const base = cpf.slice(0, 9);
const digit1 = (calcCheckDigit(base, 10) * 10) % 11 % 10;
const digit2 = (calcCheckDigit(base + digit1, 11) * 10) % 11 % 10;
return cpf.endsWith(`${digit1}${digit2}`);
}
function formatCPF(cpf) {
const digits = cpf.replace(/[^\d]+/g, '');
if (digits.length !== 11)
return cpf;
return `${digits.slice(0, 3)}.${digits.slice(3, 6)}.${digits.slice(6, 9)}-${digits.slice(9, 11)}`;
}