En esta oportunidad te muestro el código para validar números de DNI o NIE españoles con JavaScript.
El código
const validateVat = (value) => {
let number, dni, letter;
let expresion_regular_dni = /^[XYZ]?\d{5,8}[A-Z]$/;
value = value.toUpperCase();
if (expresion_regular_dni.test(value) === true) {
number = value.substr(0, value.length - 1);
number = number.replace('X', 0);
number = number.replace('Y', 1);
number = number.replace('Z', 2);
dni = value.substr(value.length - 1, 1);
number = number % 23;
letter = 'TRWAGMYFPDXBNJZSQVHLCKET';
letter = letter.substring(number, number + 1);
if (letter != dni) {
console.log('Wrong ID, the letter of the NIF does not correspond');
return false;
} else {
console.log('Correct ID');
return true;
}
} else {
console.log('Wrong ID, invalid format');
return false;
}
}
Cómo funciona
- Comprueba con una expresión regular que el valor tenga el formato de un DNI o NIE: una letra opcional (X, Y o Z), entre 5 y 8 dígitos y una letra final.
- En los NIE sustituye la letra inicial por su número equivalente (X = 0, Y = 1, Z = 2).
- Calcula el resto de dividir el número entre 23 y obtiene la letra de control correspondiente.
- Compara esa letra con la que se ha introducido.
Es un script bastante simple pero eficiente. Puedes verlo también en el repositorio de GitHub.