gtech-cpf-validator
Version:
Valida o número do CPF através dos dígitos verificadores (utilizando a regra matemática específica) e retornar true ou false de acordo com o caso.
34 lines (28 loc) • 1.21 kB
JavaScript
function cpfValidator(number) {
const regex = /([0-9]{3})\.?([0-9]{3})\.?([0-9]{3})\-?([0-9]{2})/g; // eslint-disable-line no-useless-escape
const match = regex.exec(number);
if (match !== null) {
const CPFNumbersWithoutValidationDigits = match[1] + match[2] + match[3];
const parcialCPF = [...CPFNumbersWithoutValidationDigits].map(char => parseInt(char));
if (match.input === match[0] && (!parcialCPF.every(num => num === parcialCPF[0]))) {
const firstDigit = validateDigits(parcialCPF);
const newParcialCPF = [...parcialCPF, firstDigit];
const secondDigit = validateDigits(newParcialCPF);
const validationDigits = `${firstDigit}${secondDigit}`;
return (match[4] === validationDigits);
}
}
return false;
}
function validateDigits(digitsCpf) {
const multiplyDigits = digitsCpf.map((number, indice, array) => {
return number * ((array.length + 1) - indice);
});
const sumDigits = multiplyDigits.reduce((acc, currentValue) => {
return acc + currentValue;
});
const result = ((sumDigits * 10) % 11);
if (result === 10) return 0;
else return result;
}
module.exports.cpfValidator = cpfValidator;