UNPKG

@mquiuqui/doc-validator

Version:

Validador de documentos brasileiros (CPF, CNPJ, etc)

29 lines (28 loc) 865 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidCNH = isValidCNH; exports.formatCNH = formatCNH; function isValidCNH(cnh) { cnh = cnh.replace(/\D/g, ''); if (cnh.length !== 11 || /^(\d)\1+$/.test(cnh)) return false; let sum = 0; for (let i = 0, j = 9; i < 9; ++i, --j) { sum += parseInt(cnh.charAt(i)) * j; } let d1 = sum % 11; d1 = d1 >= 10 ? 0 : d1; sum = 0; for (let i = 0, j = 1; i < 9; ++i, ++j) { sum += parseInt(cnh.charAt(i)) * j; } let d2 = sum % 11; d2 = d2 >= 10 ? 0 : d2; return `${d1}${d2}` === cnh.slice(-2); } function formatCNH(cnh) { const digits = cnh.replace(/\D/g, ''); if (digits.length !== 11) return cnh; return `${digits.slice(0, 3)} ${digits.slice(3, 6)} ${digits.slice(6, 9)} ${digits.slice(9)}`; }