Skip to content

Instantly share code, notes, and snippets.

@donpandix
Last active May 21, 2024 17:34
Show Gist options
  • Save donpandix/f1d638c3a1a908be02d5 to your computer and use it in GitHub Desktop.
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

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