Función para validar DNI o NIE en JavaScript

Función para validar DNI o NIE en JavaScript
5 (100%) 1 vote

Cuando se valida un formulario web, sobretodo si se le están pidiendo datos del usuario, es muy común que se pida el DNI o NIE, el cual se deberá validar para minimizar los errores en el mismo. Estas primeras validaciones validaciones, se harán preferentemente en el lado del cliente para ahorrar carga al servidor y aumentar la velocidad de respuesta del navegador.

Para esta validación, se puede llamar a la siguiente función para validar DNI o NIE en Javascript, la cual devolverá true si tiene un formato válido (incluida la letra calculada para el DNI), o false en caso contrario.

// Comprueba si es un DNI correcto (entre 5 y 8 letras seguidas de la letra que corresponda).

// Acepta NIEs (Extranjeros con X, Y o Z al principio)
function validateDNI(dni) {
    var numero, let, letra;
    var expresion_regular_dni = /^[XYZ]?\d{5,8}[A-Z]$/;

    dni = dni.toUpperCase();

    if(expresion_regular_dni.test(dni) === true){
        numero = dni.substr(0,dni.length-1);
        numero = numero.replace('X', 0);
        numero = numero.replace('Y', 1);
        numero = numero.replace('Z', 2);
        let = dni.substr(dni.length-1, 1);
        numero = numero % 23;
        letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
        letra = letra.substring(numero, numero+1);
        if (letra != let) {
            //alert('Dni erroneo, la letra del NIF no se corresponde');
            return false;
        }else{
            //alert('Dni correcto');
            return true;
        }
    }else{
        //alert('Dni erroneo, formato no válido');
        return false;
    }
}

 

1 comentario en “Función para validar DNI o NIE en JavaScript”

  1. Funciona genial!
    El único problema es que la variable let entra en conflicto con el tipo de variable let (me pasa al compilar desde VueJS), así que con llamarle de otro modo ya funciona bien,
    gracias por la función!

Deja un comentario

Esta web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está aceptando éstas y nuestra política de las mismas.

ACEPTAR
Aviso de cookies