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; } }
Esta función servirá tanto para la validación de DNI, como para validar NIE. Se podría decir que para validar carnet de identidad. Puedes probarlo con tu propio DNI, o bien, buscar en Google un generador de DNI, el cual generará DNIs válidos y aleatorios para tus pruebas.
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!
Excelente, gran aporte! Muy util
Se agradeceria ver el formulario previo también.