Skip to content

Instantly share code, notes, and snippets.

@donpandix
Last active February 1, 2026 15:09
Show Gist options
  • Select an option

  • Save donpandix/f1d638c3a1a908be02d5 to your computer and use it in GitHub Desktop.

Select an option

Save donpandix/f1d638c3a1a908be02d5 to your computer and use it in GitHub Desktop.
Valida RUT chileno con JavaScript
var Fn = {
// Valida el rut con su cadena completa "XXXXXXXX-X"
validaRut : function (rutCompleto) {
if (!/^[0-9]+[-|‐]{1}[0-9kK]{1}$/.test( rutCompleto ))
return false;
var tmp = rutCompleto.split('-');
var digv = tmp[1];
var rut = tmp[0];
if ( digv == 'K' ) digv = 'k' ;
return (Fn.dv(rut) == digv );
},
dv : function(T){
var M=0,S=1;
for(;T;T=Math.floor(T/10))
S=(S+T%10*(9-M++%6))%11;
return S?S-1:'k';
}
}
// Uso de la función
alert( Fn.validaRut('11111111-1') ? 'Valido' : 'inválido');
@donpandix
Copy link
Author

Se adicionó en la validación de la forma de la expresión regular el caracter 8208 "-" para que tambien admita ese caracter como divisor del rut.

@panconjugo
Copy link

panconjugo commented Nov 26, 2019

Gracias por el código, lo acabo de encontrar, usare tu regex para mi aplicación php. PD = Quiero poner una idea para discusión...Sera necesario restringir la cantidad de números previos al guion? por que si ingreso por ejemplo 1122334455667788-9 lo toma como válido, y por el momento la cantidad debería ser 9 u 8.

Se podria usar como un plugin en donde se pueda especificar la cantidad máxima de dígitos antes del guion y el regex quedaría así:
^[0-9]{8,9}[-|‐]{1}[0-9kK]{1}$

@abadillanovasis
Copy link

Gracias!

@BastianIgn4cio
Copy link

Gracias por el código, lo acabo de encontrar, usare tu regex para mi aplicación php. PD = Quiero poner una idea para discusión...Sera necesario restringir la cantidad de números previos al guion? por que si ingreso por ejemplo 1122334455667788-9 lo toma como válido, y por el momento la cantidad debería ser 9 u 8.

Se podria usar como un plugin en donde se pueda especificar la cantidad máxima de dígitos antes del guion y el regex quedaría así: ^[0-9]{8,9}[-|‐]{1}[0-9kK]{1}$

value.replace(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4'); (junto con maxlength = 10 formatea el rut a xx.xxx.xxx-x)

@donpandix
Copy link
Author

Buenísimo el aporte @BastianIgn4cio

@DannaEL2023
Copy link

Hola César González .. Escribo para agradecer Tu Generosidad, cuando uno ya sabes a veces en contra del tiempo..y bajo presion y con la mente nublada lloviendo bajo tormenta las ideas creativas.. se las lleva la lluvia.. gracias por tus código de solidaridad.. colega .. atento aquí..

@K3yr0nym0us
Copy link

Gracias por el código, lo acabo de encontrar, usare tu regex para mi aplicación php. PD = Quiero poner una idea para discusion...Sera necesario cambiar la cantidad de numeros anteriores al guion? por que si ingreso por ejemplo 1122334455667788-9 lo toma como válido, y por el momento la cantidad debería ser 9 u 8.
Se podría usar como un plugin en donde se pueda especificar la cantidad máxima de dígitos antes del guion y el regex quedaría así: ^[0-9]{8,9}[-|‐]{1}[0-9kK]{ 1}$

valor.reemplazar(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4'); (junto con maxlength = 10 formatea el rut a xx.xxx.xxx-x)

Esto no me funciono, solo con rut de 1 digito primario como 1.111.111-1 pero con dos digitos no funciona, sale asi: 1.111.111-11 en vez de asi: 11.111.111-1

@Shumma
Copy link

Shumma commented Jan 16, 2024

Agradecido con el de arriba

@paulagaldames
Copy link

gracias por el aporte, me ayudara mucho para una validacion que necesito hacer.

@hansfpc
Copy link

hansfpc commented Feb 1, 2026

super buen gist!

para ahorrarme trabajo instalo

npm i -S rut.ts

https://github.com/arrowsw/rut.ts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment