Skip to content

Instantly share code, notes, and snippets.

@robertoandres24
Last active August 27, 2022 04:24
Show Gist options
  • Save robertoandres24/c8df5cd740e01a78adbe54af4a032d29 to your computer and use it in GitHub Desktop.
Save robertoandres24/c8df5cd740e01a78adbe54af4a032d29 to your computer and use it in GitHub Desktop.
Validador ruc, dni Peru
//let dni='';
/*while(!(/^\d{8}[a-zA-Z]$/.test(dni))){
dni = prompt("Introduzca un número de DNI: 8 números y una letra");
}*/
function validateDni(dni) {
//Se separan los números de la letra
var letraDNI = dni.substring(8, 9).toUpperCase();
var numDNI = parseInt(dni.substring(0, 8));
//Se calcula la letra correspondiente al número
var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
var letraCorrecta = letras[numDNI % 23];
if(letraDNI!= letraCorrecta){
console.log("Has introducido una letra incorrecta\nTu letra debería ser: " + letraCorrecta);
return false
} else {
console.log("Enhorabuena hemos podido validar tu DNI");
return true
}
}
console.log(validateDni('43920792K'))
/*
** Validates RUC
*/
function validarRuc(data) {
//Elimina cualquier caracter espacio o signos habituales y comprueba validez
var ruc = data.replace(/[-.,[\]()\s]+/g,"")
// Devuelve un booleano si es un RUC válido
// (deben ser 11 dígitos sin otro caracter en el medio)
//11 dígitos y empieza en 10,15,16,17 o 20
if (!(ruc >= 1e10 && ruc < 11e9
|| ruc >= 15e9 && ruc < 18e9
|| ruc >= 2e10 && ruc < 21e9))
return false;
for (var suma = -(ruc%10<2), i = 0; i<11; i++, ruc = ruc/10|0)
suma += (ruc % 10) * (i % 7 + (i/7|0) + 1);
return suma % 11 === 0;
}
console.log(validarRuc('20527237956'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment