validar-rut-vicho
Version:
Validador de RUT chileno compatible con JavaScript y TypeScript
71 lines • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validarRut = validarRut;
exports.validarRutSinPuntos = validarRutSinPuntos;
exports.validarRutConGuion = validarRutConGuion;
// EL RUT DEBE SER FORMATO: 11.111.111-1
function validarRut(rut) {
// Eliminar puntos y guiones
const cleanedRut = rut.replace(/[\.\-]/g, '');
// Validar formato
const rutPattern = /^\d{1,8}[Kk\d]$/;
if (!rutPattern.test(cleanedRut)) {
return false;
}
// Extraer cuerpo y dígito verificador
const cuerpo = cleanedRut.slice(0, -1);
const dv = cleanedRut.slice(-1).toUpperCase();
// Calcular dígito verificador
let suma = 0;
let multiplicador = 2;
for (let i = cuerpo.length - 1; i >= 0; i--) {
suma += parseInt(cuerpo[i]) * multiplicador;
multiplicador = multiplicador === 7 ? 2 : multiplicador + 1;
}
const resto = suma % 11;
const dvCalculado = resto === 0 ? '0' : resto === 1 ? 'K' : (11 - resto).toString();
return dv === dvCalculado;
}
// EL RUT DEBE SER FORMATO: 123456789
function validarRutSinPuntos(rut) {
// Validar formato
const rutPattern = /^\d{1,8}[Kk\d]$/;
if (!rutPattern.test(rut)) {
return false;
}
// Extraer cuerpo y dígito verificador
const cuerpo = rut.slice(0, -1);
const dv = rut.slice(-1).toUpperCase();
// Calcular dígito verificador
let suma = 0;
let multiplicador = 2;
for (let i = cuerpo.length - 1; i >= 0; i--) {
suma += parseInt(cuerpo[i]) * multiplicador;
multiplicador = multiplicador === 7 ? 2 : multiplicador + 1;
}
const resto = suma % 11;
const dvCalculado = resto === 0 ? '0' : resto === 1 ? 'K' : (11 - resto).toString();
return dv === dvCalculado;
}
// El rut debe ser validado con ejemplo 12345678-9
function validarRutConGuion(rut) {
// Validar formato
const rutPattern = /^\d{1,8}-[Kk\d]$/;
if (!rutPattern.test(rut)) {
return false;
}
// Extraer cuerpo y dígito verificador
const [cuerpo, dv] = rut.split('-');
const dvUpper = dv.toUpperCase();
// Calcular dígito verificador
let suma = 0;
let multiplicador = 2;
for (let i = cuerpo.length - 1; i >= 0; i--) {
suma += parseInt(cuerpo[i]) * multiplicador;
multiplicador = multiplicador === 7 ? 2 : multiplicador + 1;
}
const resto = suma % 11;
const dvCalculado = resto === 0 ? '0' : resto === 1 ? 'K' : (11 - resto).toString();
return dvUpper === dvCalculado;
}
//# sourceMappingURL=index.js.map