Validador de RUT chileno, con una función implementada el lenguaje JavaScript
Este es un validador de Rut Chileno con JavaScript, no recuerdo de donde saqué el original, pero lo modifiqué para incorporarlo en una colección de funciones reutilizables bajo el paquete Fn, traté de reducirlo lo más posible, creo que se puede achicar un poco más… pero sólo sería algo cosmético porque como está funciona bastante bien, sin más, les presento la función:
Para hace una prueba en vivo, hice esta implementación para que lo puedas probar en línea, está alojada en CODEPEN, y queda a tu libre disposición, no olvides de agradecer y si quieres también una mención si este trabajo te ha sido de ayuda.
See the Pen Valida Rut Chileno by Cesar Gonzalez (@donpandix) on CodePen.
Muy buen codigo, simple y corto, lo ideal… ahhh, y lo mejor es que funciona 😀
Hola se ve bonito pero lo realice y no me funciono, por casualidad no lo tienes comprimido para bajar? de antemano muchas gracias
Hola Marcos, si acá puedes descargar el proyecto para que lo ejecutes en tu equipo https://dl.dropbox.com/s/1986epknt2akacs/valida-rut-chileno.zip
espero que te sea de mucha utilidad
Cesar el script tira como inválidos estos RUTs: 96577310‐K, 89664200‐6, 96631520‐2, 89862200‐2, 93383000‐4, 96951280‐7,
Pero existen en SII, a que se debe, sabes algo al respecto?
Hola Jesús:
Gracias por reportar el problema, lo que ocasiona que el validador rechaze el rut, no tiene que ver con el algoritmo de cálculo sino mas bien con el caracter que separa la mantisa con el dígito verificador, en los Ruts que me mostrabas el guión «-» tinene el charset (8028) y el que estaba esperando en la expresión regular era el caracter charset(45), por lo que retornaba un False a pesar de que el rut si es válido.
Lo que hice finalmente fué el agregar este caracter a la expresión regular para que sea admitido como caracter de separación del dígito verificador.
Espero que esto sea de ayuda para tí. Saludos y gracias por el aviso.
Me sirvió mucho, gracias !!!
Muchas gracias! Excelente código, compacto y funcional, gracias por compartirlo 😀
Hola, estoy buscando este código pero lo necesito para un tomador de encuestas en formato Regex.
Actualmente tengo el código para validar que el Rut cumpla el formato pero no para que sea un rut válido
El código del formato es: ^\d{1,2}\.\d{3}\.\d{3}[-][0-9kK]{1}$
No sé si tienes alguno para que lo valide.
Muchas gracias
Entiendo tu problema, pero las expresiones regulares sólo son aplicables a formatos de cadenas de caracteres sin lógica de negocio, en el caso de un Rut, se calcula su validez en base al algoritmo de módulo 11, en palabras simples la validación con expresiones regulares solo válida formas de cadenas. Lamentablemente tienes que poner un paso posterior a la validación con expresiones regulares que compruebe el Rut basado en módulo 11
Espero que esta explicación sirva
Hola, amigo gracias por la ayuda.
Como seria la implementación con un boton submit?
Saludos cordiales.
Como se podría implementar este en un formulario php con varios campos, además del rut..
Saludos
Hola Liz, no es complejo, el tema es que hay ser ordenado, yo personalmente para las validaciones con javascript las hago a mano con JQuery y haciendo uso de los tags ID de los elementos, y de acuerdo a lo esperado a cada uno validar, no tengo un ejemplo desarrollado aun, pero voy a preparar algo que puedas usar como base adaptándolo a tus necesidades, la verdad es que he estado bastante atareado, pero me haré un tiempo para ayudarte con esto.
en lo particular me ayudo con JQUERY para lo que es el manejo de obtención de los valores gatillado con un botón normal, sin hacer submit, y una vez que pasan todos los valores las validaciones previas, gatillo el sumbit del formulario desde javascript con la funcionalidad de jquery $(«#idformulario»).submit(), encuentro que es la forma que más me ha gustado porque me da mayor control y manipulacion de los datos antes de enviarlos.
Hola! gracias por el codigo. me sirvio para mi proyecto… aunque me gustaria resolver algunas dudas:
el primer if valida si el rut esta correcto o no, pero luego haces un split que saca el guion k, etc… para meterlo en la funcion dv… mi pregunta es para que sirve esa funcion si el rut ya se validó?
Buenas José, primero disculpa la tardanza en la respuesta, te cuento, la primera validación (por medio de expresión regular) solo valida la forma de la cadena del rut, hasta el momento solo valida que tenga la apariencia de un rut esperado, es decir, ########-(#,k,K), luego de esta primera validación comprueba que el dígito verificador cumpla con el algoritmo de cálculo de módulo 11, por lo que en resumen, ambas validaciones tienen propósitos diferentes pero que unidas validan que el rut sea el esperado en forma y valor, espero que la explicación no sea muy enredada,
Happy Coding
Super bueno, por muchos años programe en PHP, y hace un año que parti con c# y angular y estoy encantado. Estoy armando una aplicacion y andaba viendo un validador de rut, que asumi debia estar escrito por ahi, digo, para no redescubrir la rueda. Muchas gracias!
Me alegra un montón que te sea de ayuda ✌🏼