Validando Cif, Nif y Nie
VictorR Lunes, 29 de Junio del 2009
Etiquetas: javascript, tips & tricks
Del proyecto en el que trabajo en la actualidad he “sacado” estas tres piezas de código. Nada fuera de lo común, pero que sin duda sirven y servirán para una parte de las pequeñas tareas que se realizan en cada proyecto. Esto es, validar datos.
Como todo el mundo sabe, para que una aplicación, web, cosa… funcione, debe mantener un conjunto discreto de datos (esto siempre me gustó de las clases de mates), información, de una manera poco ambigua. Y por eso es necesario validar la mayoría de datos que la aplicación, web, cosa… acepta.
Básicamente hay dos maneras de validar los datos, una es en el navegador del cliente, con tecnologías tipo javascript, y la otra es en el servidor, por ejemplo con java, php… Poco más queda decir a parte de que la manera más fácil de controlar los datos y más segura es validar los datos a nivel de servidor. Ya sabes, desactivas el javascripi y te quedas sin validar.
Sim embargo, lo que os traigo aquí es javascript, ¿por qué? Porque a modo de “repositorio” quiero guardar estas “perlas” para futuros trabajos y que sirva a otros vagos de ayuda.
Validar CIF
var pares = 0;
var impares = 0;
var suma;
var ultima;
var unumero;
var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
var xxx;
texto = this.toUpperCase();
var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d{7}[0-9,A-J]$/g);
if (!regular.exec(texto)) return false;
ultima = texto.substr(8,1);
for (var cont = 1 ; cont < 7 ; cont ++){
xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
pares += parseInt(texto.substr(cont,1));
}
xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
suma = (pares + impares).toString();
unumero = parseInt(suma.substr(suma.length - 1, 1));
unumero = (10 - unumero).toString();
if(unumero == 10) unumero = 0;
if ((ultima == unumero) || (ultima == uletra[unumero]))
return true;
else
return false;
}
Validar DNI
dni = this.toUpperCase();
numero = dni.substr(0,dni.length-1);
let = dni.substr(dni.length-1,1);
let = let.toUpperCase();
numero = numero % 23;
letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
lletra = letra.charAt(numero);
return (lletra == let)
}
Validar NIE
var dni = this.toUpperCase();
var pre = dni.substr(0, 1);
var prev = '0';
if (pre == 'X')
prev = '0';
else if (pre == 'Y')
prev = '1';
else if (pre == 'Z')
prev = '2';
numero = prev + dni.substr(1,dni.length-1);
return numero.testDNI();
}
Si os dáis cuenta, las funciones extienden la clase String de javascript, esto es simplemente para que sea más facil de utilizar y lo más “orientado” a objetos posible.
Ejemplo de USO
"74185296S".testDNI(); // value: true
NOTA: que quede claro que el código no me lo he inventado yo, lo he adaptado de los recursos que se pueden encontrar en la inmensidad de internet. Lo que pasa es que no recuerdo de dónde los saqué, ni si lo saqué yo, y no puedo poner la retribución que se merece el autor/es de dichos scripts.
4 comentarios a "Validando Cif, Nif y Nie" »
habrá alguna referencia en el boe , no ?
saludos
Pues, a saber, los temas legales los dejo para mi abogado…
Muxas grazias, m a alludado a sako
Genial!!!
Muchas gracias.
Suscripción RSS a los comentarios de esta entrada. TrackBack URL
Deja tu comentario