UNPKG

@cksharma11/rut-validator

Version:

RUT Validator

25 lines (24 loc) 801 B
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); };