JavaScript » Validar un CIF en Javascript
El CIF (Código de Identificación Fiscal) es un elemento de identificación administrativa para organizaciones y consta de 9 dígitos:
_ _ _ _ _ _ _ _ _
|_| |_|_|_|_|_|_|_| |_|
^ ^ ^ ^
| |_ Números _| |
| |
| Dígito de control, un número ó letra:
| {Aó1,Bó2,Có3,Dó4,Eó5,Fó6,Gó7,Hó8,Ió9,Jó0}
|
Letra de tipo de Organización, una de las siguientes:
{A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S}
El primer dígito es una letra que indica el tipo de la organización y puede ser una de los siguientes:
- A - Sociedad Anónima.
- B - Sociedad de responsabilidad limitada.
- C - Sociedad colectiva.
- D - Sociedad comanditaria.
- E - Comunidad de bienes.
- F - Sociedad cooperativa.
- G - Asociación.
- H - Comunidad de propietarios.
- K - Formato antiguo.
- L - Formato antiguo.
- M - Formato antiguo.
- N - Formato antiguo.
- P - Corporación local.
- Q - Organismo autónomo
- S - Organo de la administración.
Los siete dígitos siguientes son números y el último es el dígito de control que puede ser un número ó una letra.
Las operaciones para calcular el dígito de control se realizan sobre los siete dígitos centrales. Vamos a ver qué operaciones son y como podemos implementarlas con Javascript:
- Sumar los dígitos de la posiciones pares. La suma la dejaremos en una primera variable A
- Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado.Acumular el resultado en la variable B.
El código que utilizamos para este primer paso es sencillo. El acceso al número del CIF lo realizamos mediante el uso de la función substr tanto para los números pares como para los impares.
// Sumamos los A y B a = 0; b = 0; var calculo = new Array(0,2,4,6,8,1,3,5,7,9); for(x=2;x<=6;x+=2) { a = a + parseInt(cif.substr(x,1)); b = b + calculo[parseInt(cif.substr(x-1,1))]; } b = b + calculo[parseInt(cif.substr(x-1,1))];
Para los números impares hemos visto que hay que hacer alguna cosa adicional (multiplicarlos por dos y sumar los dígitos). Como esto nos puede resultar costoso de programar, utilizamos un pequeño truco. Y es que dado un número, en un array cargamos su resultado.
Así tenemos el siguiente array:
var calculo = new Array(0,2,4,6,8,1,3,5,7,9);
Y por qué el array es así. Pues es el resultado del cálculo expresado anteriormente:
0 x 2 = 0 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10; 1 + 0 = 1 6 x 2 = 12; 1 + 2 = 3 7 x 2 = 14; 1 + 4 = 5 8 x 2 = 16; 1 + 6 = 7 9 x 2 = 18; 1 + 8 = 9
- Sumamos A + B = C
- Tomar sólo el dígito de las unidades de C y restárselo a 10. Esta resta nos da D.
El código de esta última acción sería el siguiente:
d = (10 -(c%10));
- A partir de D ya se obtiene el dígito de control. Si ha de ser numérico es directamente D y si se trata de una letra se corresponde con la relación:
A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 0
Veamos como ejemplo para el número de C.I.F. : A58818501
Utilizamos los siete dígitos centrales = 5881850
Sumamos los dígitos pares: A = 8 + 1 + 5 = 14
Posiciones impares:
5 * 2 = 10 -> 1 + 0 = 1
8 * 2 = 16 -> 1 + 6 = 7
8 * 2 = 16 -> 1 + 6 = 7
0 * 2 = 0 -> = 0
Sumamos los resultados: B = 1 + 7 + 7 + 0 = 15
Suma parcial: C = A + B = 14 + 15 = 29
El dígito de las unidades de C es 9. Se lo restamos a 10 y nos da: D = 10 - 9 = 1
Si el dígito de control ha de ser un número es 1 y si ha de ser una letra es la "A"
![]() Visualiza el artículo |
![]() Descargar el código |
![]() Error en el código |
![]() Foro sobre Javascript |
Artículos relacionados:










Mayo 26, 2010 #
Información Bitacoras.com…
Valora en Bitacoras.com: El CIF (Código de Identificación Fiscal) es un elemento de identificación administrativa para organizaciones y consta de 9 dígitos: _ _ _ _ _ _ _ _ _ |_| |_|_|_|_|_|_|_| |_| ^ ^ ^ ^ | |_ Números _| | | | | Dígito de con……
Mayo 31, 2010 #
[...] Validar un CIF en Javascript [...]
Agosto 10, 2010 #
Hola, una pregunta, sabrías decirme si en algún BOE o en algún sitio oficial tienen descrito el modo de validar un CIF/NIF/NIE, por más que lo busco me es imposible encontrarlo.
Muchas gracias.
Octubre 6, 2010 #
hola, este algoritmo lo estoy utilizando con éxito, pero hay cifs de Organismos que dan cif incorrecto..por ejemplo este…Q7855018C