Javascript para Validar CNPJ


Em projetos de desenvolvimento de sistemas para Internet, quando implementamos formulários de cadastro muitas vezes no deparamos com um campo de CNPJ cujo valor precisa ser validado no momento da submissão do form.

Neste tutorial rápido vamos apresentar uma função em javascript com este propósito, ensinando-o como utilizá-la.

Ressaltamos que a validação é realizada conforme o algoritmo do CNPJ o que significa que um número válido não necessariamente é um número existente e com situação cadastral regular perante a Receita Federal. Para conferir se um CNPJ existe e sua situação cadastral atual, acesse o site da Receita Federal do Brasil.

Abaixo a função proposta e na sequência uma breve análise do código:


function validarCNPJ(cnpj) {

	cnpj = cnpj.replace(/[^\d]+/g,'');

	if(cnpj == '') return false;
	
	if (cnpj.length != 14)
		return false;

	// Elimina CNPJs invalidos conhecidos
	if (cnpj == "00000000000000" || 
		cnpj == "11111111111111" || 
		cnpj == "22222222222222" || 
		cnpj == "33333333333333" || 
		cnpj == "44444444444444" || 
		cnpj == "55555555555555" || 
		cnpj == "66666666666666" || 
		cnpj == "77777777777777" || 
		cnpj == "88888888888888" || 
		cnpj == "99999999999999")
		return false;
		
	// Valida DVs
	tamanho = cnpj.length - 2
	numeros = cnpj.substring(0,tamanho);
	digitos = cnpj.substring(tamanho);
	soma = 0;
	pos = tamanho - 7;
	for (i = tamanho; i >= 1; i--) {
	  soma += numeros.charAt(tamanho - i) * pos--;
	  if (pos < 2)
			pos = 9;
	}
	resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
	if (resultado != digitos.charAt(0))
		return false;
		
	tamanho = tamanho + 1;
	numeros = cnpj.substring(0,tamanho);
	soma = 0;
	pos = tamanho - 7;
	for (i = tamanho; i >= 1; i--) {
	  soma += numeros.charAt(tamanho - i) * pos--;
	  if (pos < 2)
			pos = 9;
	}
	resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
	if (resultado != digitos.charAt(1))
		  return false;
		  
	return true;
   
}

Na linha 3, eliminamos todos os caracteres não númericos do CNPJ passado como parâmetro, considerando que quem invocou a função pode ter utilizado-se de uma possível máscara no campo.

A instrução if da linha 7 verifica se a quantidade de numerais da string (considerando-a já limpa) é igual a quantidade correta - 14.

As linha 10 à 21 checam se a string é formado apenas por valores iguais. Esta verificação é necessária uma vez que se aplicarmos o algoritmo do CNPJ sobre o número "22.222.222/2222-22" em teoria os dígitos verificadores estão corretos, ainda que este NÃO seja um número válido.

As linha 23 à 49 checam os dois dígitos verificadores, verificando sua validade de acordo com o algoritmo do CNPJ. Caso negativo, a validação retorna false encerrando a função.

Caso o algoritmo alcance a linha 51 temos um CNPJ válido e o valor true é retornado.

Muito fácil não é? Você pode ver uma demonstração desta função em execução na página do validador de CNPJ aqui do site. Após implementar este script em seu site, se você quiser testá-lo, utilize nossa página principal para gerar cnpj's válidos e verificar se sua página responde corretamente.


Divulgue este Artigo!



Copyright - 2007-2015 - Gerador de CNPJ - Como Gerar CNPJ 's Válidos