UNPKG

@ctrpdev/cl-rut-validator

Version:
36 lines (35 loc) 1.36 kB
/** * Esta función acepta un RUT normalizado por rutNormalizer() * o con el mismo formato limpio, por ejemplo: 11222333k * @param rutNormalized RUT normalizado * @returns Retorna true si el RUT es válido y falso si no es válido */ export function rutValidator(rutNormalized) { var rut = rutNormalized.slice(0, rutNormalized.length - 1); var dv = rutNormalized.charAt(rutNormalized.length - 1); var reRut = /^[0-9]{1,8}$/; var reDv = /^[\dkK]$/; var reRepeated = /(.)\1{7,}/; var rutIsValid = false; var dvIsValid = false; var dvCheck; reRut.test(rut) ? rutIsValid = true : rutIsValid = false; reDv.test(dv) ? dvIsValid = true : dvIsValid = false; if (!rutIsValid || !dvIsValid || rut.length < 7 || rut.length > 8 || reRepeated.test(rut)) { return false; } if (rutIsValid && dvIsValid && rut.length > 6 && rut.length < 9) { var sum = 0; var multiplier = 2; for (var i = rut.length - 1; i >= 0; i--) { sum += parseInt(rut.charAt(i)) * multiplier; multiplier = multiplier === 7 ? 2 : multiplier + 1; } var rest = sum % 11; dvCheck = 11 - rest === 11 ? '0' : 11 - rest === 10 ? 'K' : (11 - rest).toString(); if (dvCheck.toLowerCase() === dv.toLowerCase()) { return true; } } return false; }