@singuerinc


2014-08-06 by Nahuel Scotti | 1 min read

Validar DNI/NIE/NIF de España

  • #dni
  • #javascript
  • #nie
  • #nif
  • #regex
  • #spain
  • #validation

Update! Si bien este código funciona, te recomiendo utilizar mi nueva librería "Better DNI" que he publicado en Github. Puedes probarla aquí: https://better-dni.netlify.com/

Validamos un DNI español con Javascript, puede validar tanto NIF como NIE.

function validate(value) {
  var validChars = 'TRWAGMYFPDXBNJZSQVHLCKET';
  var nifRexp = /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i;
  var nieRexp = /^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/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;
}

validate('12345678Z'); //true - "nif"
validate('X9464187D'); //true - "nie"
Demo