jueves, 9 de diciembre de 2010

Validar el NIF

Son múltiples los ejemplos existentes por internet de scripts que calculan la letra del DNI a partir del número. No así los scripts que realizan la validación. Así pues comparto mi encomiable esfuerzo :D por si a alguien le ahorra los 5 minutos que lleva hacerlo.

///Lleva a cabo la validación del nif
   function validanif(nif)
   {
    //Validación básica de formato
    var validformat = /^\d{8}([A-Z]|[a-z])$/;
    var numero;
    
    if (!validformat.test(nif))
     return false;

    //Entrando en detalle
    numero = parseInt(nif.substring(0,8));
    
    //Si no es un número dar error
    if (isNaN(numero))
     return false;
     
    //Se comparan ambos resultados y se devuelve
    return (letranif(numero)==nif.substring(8,9).toUpperCase());
   }
   
   ///Calcula la letra del nif a partir del número
   function letranif(numero)
   {
    aLetras = new Array();
    aLetras[0] = "T" ;aLetras[1] = "R" ;aLetras[2] = "W" ;
    aLetras[3] = "A" ;aLetras[4] = "G" ;aLetras[5] = "M" ;
    aLetras[6] = "Y" ;aLetras[7] = "F" ;aLetras[8] = "P" ;
    aLetras[9] = "D" ;aLetras[10] = "X" ;aLetras[11] = "B" ;
    aLetras[12] = "N" ;aLetras[13] = "J" ;aLetras[14] = "Z" ;
    aLetras[15] = "S" ;aLetras[16] = "Q" ;aLetras[17] = "V" ;
    aLetras[18] = "H" ;aLetras[19] = "L" ;aLetras[20] = "C" ;
    aLetras[21] = "K" ;aLetras[22] = "E" ;   
    
    return aLetras[numero%23];
   }

No hay comentarios:

Publicar un comentario