UNPKG

@mquiuqui/doc-validator

Version:

Validador de documentos brasileiros (CPF, CNPJ, etc)

28 lines (27 loc) 1.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidCNPJ = isValidCNPJ; exports.formatCNPJ = formatCNPJ; function isValidCNPJ(cnpj) { cnpj = cnpj.replace(/[^\d]+/g, ''); if (cnpj.length !== 14 || /^(\d)\1+$/.test(cnpj)) return false; const calcCheckDigit = (cnpj, pos) => { const weight = pos === 12 ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; const sum = cnpj .slice(0, pos) .split('') .reduce((acc, digit, i) => acc + parseInt(digit) * weight[i], 0); const rest = sum % 11; return rest < 2 ? 0 : 11 - rest; }; const digit1 = calcCheckDigit(cnpj, 12); const digit2 = calcCheckDigit(cnpj, 13); return cnpj.endsWith(`${digit1}${digit2}`); } function formatCNPJ(cnpj) { const digits = cnpj.replace(/[^\d]+/g, ''); if (digits.length !== 14) return cnpj; return `${digits.slice(0, 2)}.${digits.slice(2, 5)}.${digits.slice(5, 8)}/${digits.slice(8, 12)}-${digits.slice(12, 14)}`; }