63 lines
1.1 KiB
JavaScript
63 lines
1.1 KiB
JavaScript
|
function limpiar(rut) {
|
||
|
rut = rut.replace(/\./g, '').replace(/-/g, '');
|
||
|
rut = rut.toLowerCase();
|
||
|
return rut;
|
||
|
}
|
||
|
|
||
|
function validar(rut) {
|
||
|
rut = limpiar(rut);
|
||
|
|
||
|
let dv = rut.substr(rut.length - 1, 1);
|
||
|
rut = rut.substr(0, rut.length - 1);
|
||
|
|
||
|
if (isNaN(rut)) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (rut > 50000000) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (dv === generarVerificador(rut)) {
|
||
|
return true;
|
||
|
}
|
||
|
else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function generarVerificador(rut) {
|
||
|
let multiplier = 2;
|
||
|
let sum = 0;
|
||
|
let remainder = 0;
|
||
|
let division = 0;
|
||
|
|
||
|
for (let i = rut.length - 1; i >= 0; i--) {
|
||
|
sum = sum + (rut.substr(i, 1) * multiplier);
|
||
|
multiplier++;
|
||
|
if (multiplier === 8) {
|
||
|
multiplier = 2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
division = Math.floor(sum / 11);
|
||
|
division = division * 11;
|
||
|
remainder = sum - division;
|
||
|
|
||
|
if (remainder !== 0) {
|
||
|
remainder = 11 - remainder;
|
||
|
}
|
||
|
|
||
|
if (remainder === 10) {
|
||
|
return "k";
|
||
|
}
|
||
|
else {
|
||
|
return remainder.toString(10);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
limpiar,
|
||
|
validar
|
||
|
};
|