Skip to content

Instantly share code, notes, and snippets.

@danielribes
Last active September 6, 2019 09:47
Show Gist options
  • Save danielribes/15591807d41e0cf1479d498ebdf7916a to your computer and use it in GitHub Desktop.
Save danielribes/15591807d41e0cf1479d498ebdf7916a to your computer and use it in GitHub Desktop.
Javascript: validar DNI ... per revissar i crear test unitaris
// JS per validar DNI
/**
* Valida un DNI, NIE ... i tambe hauria de validar CIF
* @param String dni El DNI a validar
* @return Bool True o False segons si DNI ok o no
*/
function validadni( dni )
{
dni_letters = ['T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'];
dni_rgexp = /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i;
nie_rgexp = /^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i;
// cleaning
dni = dni.toUpperCase();
dni = dni.replace(/\s/g, '');
dni = dni.replace(/-/g, '');
dni = dni.replace(/_/g, '');
if( (dni_rgexp.test(dni)) || (nie_rgexp.test(dni)) )
{
last_letter = dni.charAt(dni.length-1);
dni_number = dni.slice(0, dni.length-1);
// NIE
dni_number = dni_number.replace(/^[X]/, '0')
.replace(/^[Y]/, '1')
.replace(/^[Z]/, '2');
letter = dni_letters[dni_number % 23];
if( letter == last_letter )
{
return true;
} else {
return false;
}
} else {
return false;
}
}
sortida = validadni('33909482f');
console.log(sortida);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment