Skip to content

Instantly share code, notes, and snippets.

@PecceG2
Forked from jvinceso/Validar Dni
Last active October 28, 2024 13:56
Show Gist options
  • Save PecceG2/009bdb822e1feb38fe84f735ec9409a1 to your computer and use it in GitHub Desktop.
Save PecceG2/009bdb822e1feb38fe84f735ec9409a1 to your computer and use it in GitHub Desktop.
Validar Numero de Dni Solo Numeros y longitud 7-8 mediante expresiones regulares en Javascript (Fork: Soporta símbolos y acepta de 7 a 8 caracteres para personas mayores)
function validaDNI(dni){
onlyNumbersDNI = dni.toString().replace(/\D/g, '');
let ex_regular_dni = /^\d{7,8}(?:[-\s]\d{4})?$/;
if(ex_regular_dni.test(onlyNumbersDNI) == true && !(/[a-zA-Z]/g.test(dni)) && onlyNumbersDNI === dni.replace(/(\d)[\s.]+(?=\d)/g, '$1')){
alert('Dni corresponde');
return true;
}else{
alert('Dni erroneo, formato no válido');
return false;
}
}
//Uso
validaDNI("12345678") // True
validaDNI("12.345.678") // True
validaDNI("1.234.567") // True
validaDNI("123.456") // False
validaDNI("1234") // False
validaDNI("Test") // False
validaDNI("12345678A") // False
validaDNI("12.345.678B") // False
@testacode
Copy link

validaDNI("12345678A") arroja que corresponde asi que no estaria validando bien.

@PecceG2
Copy link
Author

PecceG2 commented Aug 22, 2022

**testacode ** commented hace 30 minutos

Se actualizó el código, ahora valida sin símbolos ni letras contra sin puntos ni espacios. Permite escribir "12.345.678" o "12 345 678" pero no "12.345.678A" ni "12345678A".

Debería funcionar cómo se espera.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment