UNPKG

@mquiuqui/doc-validator

Version:

Validador de documentos brasileiros (CPF, CNPJ, etc)

21 lines (20 loc) 845 B
"use strict"; 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)}`; }