@singuerinc


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

Validar DNI/NIE/NIF de España

  • #dni
  • #javascript
  • #nie
  • #nif
  • #regex
  • #spain
  • #validar
  • #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.singuerinc.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