Código Open Source

Validación de RUT en JavaScript y TypeScript

Función moderna, ligera (menos de 1 KB) y sin dependencias externas para validar cualquier RUT chileno en el front-end o en backend con Node.js / Bun.

validateRut.js
/**
 * Valida un RUT chileno con el Algoritmo Módulo 11
 * @param {string} rut - RUT con o sin puntos y guión (ej: '12.345.678-5')
 * @returns {boolean}
 */
export function isValidRut(rut) {
  if (!rut || typeof rut !== 'string') return false;

  // Limpiar caracteres
  const cleanRut = rut.replace(/[^0-9kK]/g, '').toUpperCase();
  if (cleanRut.length < 2) return false;

  const body = cleanRut.slice(0, -1);
  const dv = cleanRut.slice(-1);

  if (!/^\d+$/.test(body)) return false;

  // Algoritmo Módulo 11
  let sum = 0;
  let multiplier = 2;

  for (let i = body.length - 1; i >= 0; i--) {
    sum += parseInt(body.charAt(i), 10) * multiplier;
    multiplier = multiplier === 7 ? 2 : multiplier + 1;
  }

  const remainder = sum % 11;
  const expectedDv = 11 - remainder;

  let calculatedDv = String(expectedDv);
  if (expectedDv === 11) calculatedDv = '0';
  if (expectedDv === 10) calculatedDv = 'K';

  return dv === calculatedDv;
}

// Ejemplo de uso:
console.log(isValidRut('10.000.013-K')); // true
console.log(isValidRut('12345678-5'));   // true
console.log(isValidRut('10.000.013-0')); // false
Publicidad
Espacio Publicitario AdSense (728x90)