Publicado el 26 comentarios

Validador de RUT Chileno con JavaScript

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.

26 comentarios en “Validador de RUT Chileno con JavaScript

  1. Muy buen codigo, simple y corto, lo ideal… ahhh, y lo mejor es que funciona 😀

  2. Hola se ve bonito pero lo realice y no me funciono, por casualidad no lo tienes comprimido para bajar? de antemano muchas gracias

    1. 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

  3. 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?

    1. 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.

  4. […] la tengo dentro de un objeto que envuelve una serie de funciones comunes como son la validación de RUT, TRIM, Rellenos de cadenas con ceros… etc, pero con el fin de simplificar este POST lo dejé en […]

  5. Me sirvió mucho, gracias !!!

  6. […] con Java. Es por esto que hoy comparto este código basado en una que está desarrollada con PHP y JavaScript . Espero que les sea de bastante […]

  7. Muchas gracias! Excelente código, compacto y funcional, gracias por compartirlo 😀

  8. 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

    1. 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

  9. Hola, amigo gracias por la ayuda.
    Como seria la implementación con un boton submit?
    Saludos cordiales.

    1. Como se podría implementar este en un formulario php con varios campos, además del rut..

      Saludos

      1. 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.

    2. 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.

  10. 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ó?

    1. 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

  11. 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!

    1. Me alegra un montón que te sea de ayuda ✌🏼

      1. Hola cesar podrías volver a subir el archivo del validador no quiero para pfsense con portal cautivo saludos.

  12. Hola Cesar:
    Está genial tu código, Gracias por compartirlo.

    ¿Sabrás de algún regex para validar formato de nuestras actuales patentes en Chile?
    De antemano gracias.

  13. Hola buenos dias, existe alguna variacion a esto para que cuando en el campo de rut se ingrese el rut (unicamente en numeros), vaya mostrando la estructura en tiempo real ? 11.111.111-1

  14. invente un rut y me lo tira como valido 39585737-1 pero en SII no existe y en buscador de rut tampoco, que podria hacer para solucionar ese problema, saludos.

    1. Hola Richard, si esta función en realidad solo es una validación de forma de la cadena de texto, mas que la existencia del rut mismo, creo que para lo que necesitas es que una vez validado con este javascript la estructura de la cadena de RUT ingresada por el usuario, como segunda validación consultar a alguna API que valide la existencia del mismo en los registros del SII, hasta donde se (no he investigado más a fondo que un par de consultas a google) de existir una api de esas características, es posible que no sea gratuita.. al menos yo no encontré ninguna, pero de encontarla la publicaré inmediatamente porque la verdad que sería una característica bien interesante para implementar a la función.

      Saludos!

      1. 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í..

        1. De nada, un tremendo placer haber sido de ayuda, gracias por tu comentario motivador, éxito en todo

HOLA! si te gustó o te fue útil, por favor, considera dejarme un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.