@sjsilva-libs/validation
Version:
Validação de CNPJ e CPF
40 lines (30 loc) • 1.06 kB
text/typescript
export function isCNPJ(cnpj: string | null | undefined): boolean {
if (!(typeof cnpj === 'string' && cnpj)) return false
cnpj = cnpj.replace(/[\\.\\/-]/g, '')
if (cnpj.length !== 14 || /^(\d)\1{13}$/.test(cnpj)) return false
let length = cnpj.length - 2,
numbers = cnpj.substring(0, length),
digits = cnpj.substring(length),
sum = 0,
pos = length - 7
for (let i = length; i >= 1; i--) {
// @ts-ignore
sum += numbers[length - i] * pos--
if (pos < 2) pos = 9
}
console.log('Soma:', sum, 'Resto:', sum % 11) // <-- ADICIONE ESTA LINHA
let result = sum % 11 < 2 ? 0 : 11 - (sum % 11)
if (result !== parseInt(digits[0])) return false
length++
numbers = cnpj.substring(0, length)
sum = 0
pos = length - 7
for (let i = length; i >= 1; i--) {
// @ts-ignore
sum += numbers[length - i] * pos--
if (pos < 2) pos = 9
}
result = sum % 11 < 2 ? 0 : 11 - (sum % 11)
console.log('Resultado esperado do segundo dígito:', result) // <-- ADICIONE ESTA LINHA
return result === parseInt(digits[1])
}