Volver a la página principal
sábado 27 enero 2024
21

Cómo validar DNI español con javascript

Expresiones Regulares:

  • Se han definido dos expresiones regulares para NIF y NIE respectivamente:
  • nifRegex: ^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKE]$
  • nieRegex: ^[XYZ][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$
  • Estas expresiones regulares validan el formato de los NIF y NIE, asegurándose de que cumplan con la estructura mencionada.

Validación Adicional:

  • Además de la validación del formato, se realiza una validación adicional utilizando una fórmula.
  • Se divide el número (sin la letra final) entre 23 y se compara el resto con la posición de la letra en la cadena TRWAGMYFPDXBNJZSQVHLCKE.

Función de Validación:

  • La función validar(value) toma un número de identificación y realiza las siguientes acciones:Convierte el número a mayúsculas.
  • Verifica si cumple con el formato de NIF o NIE utilizando las expresiones regulares.
  • Si es un NIE, realiza algunas transformaciones en el formato.
  • Calcula el índice de la letra en la cadena TRWAGMYFPDXBNJZSQVHLCKE utilizando la fórmula mencionada.
  • Compara la letra final con la letra calculada.
function validar(value){

  var validChars = 'TRWAGMYFPDXBNJZSQVHLCKET';
  var nifRexp = /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]$/i;
  var nieRexp = /^[XYZ][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]$/i;
  var str = value.toString().toUpperCase();

  if (!nifRexp.test(str) && !nieRexp.test(str)) return false;

  var nie = str
      .replace(/^[X]/, '0')
      .replace(/^[Y]/, '1')
      .replace(/^[Z]/, '2');

  var letter = str.substr(-1);
  var charIndex = parseInt(nie.substr(0, 8)) % 23;

  if (validChars.charAt(charIndex) === letter) return true;

  return false;
}
Compartir:
Autor:
User photo

Jorge García

Fullstack developer