@cksharma11/rut-validator
Version:
RUT Validator
25 lines (24 loc) • 801 B
JavaScript
exports.validateRut = function (rut) {
if (!rut) {
return false;
}
/** Remove all non printable characters */
rut = rut.replace(/[^\x20-\x7E]+/g, "");
const [validator, ...number] = rut.replace(/[.-]/g, "").split("").reverse();
const reNumber = /^\d{8}$/;
const reValidator = /^[\dkK]{1}$/;
if (number.length === 7) number.push("0");
if (!reNumber.test(number.join("")) || !reValidator.test(validator)) {
return false;
}
const multiplier = [2, 3, 4, 5, 6, 7, 2, 3];
const acc = number.reduce(
(previousValue, currentValue, currentIndex) =>
previousValue + +currentValue * multiplier[currentIndex],
0
);
let dv = 11 - (acc % 11);
dv = dv === 10 ? "K" : `${dv === 11 ? 0 : dv}`;
const re = new RegExp(`${dv}`, "i");
return re.test(validator);
};