Nossos pensamentos, nossas atitudes, nossas emoções, tudo são formas de energia, constantemente influenciando o mundo a nossa volta. (Diane Dreher)

logo Moraga  
Principal
Categorias
Ferramentas

telescópio

Semanal Mensal Geral
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Jogo da velha ou Tic tac toe
  4. Captcha em PHP
  5. createElement - Solução compatível com os navegadores
  6. removeChild - Remover elementos HTML por Javascript
  7. Copiando tabelas e removendo registros duplicados no MySQL
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Captcha em PHP
  4. Jogo da velha ou Tic tac toe
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. createElement - Solução compatível com os navegadores
  7. removeChild - Remover elementos HTML por Javascript
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Captcha em PHP
  3. Jogo da velha ou Tic tac toe
  4. createElement - Solução compatível com os navegadores
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. Apache Expires Header - Cache de imagens, Javascript e CSS
  7. Removendo linhas e espaços em branco de strings
  8. removeChild - Remover elementos HTML por Javascript
  9. Verificar se existe um valor no Array em Javascript
  10. Gerando Thumbnails com PHP
e-mail Enviar por e-mail imprimir Imprimir
Javascript

Verificar CNPJ com Javascript

Por Alejandro Fernandez Moraga

Erros Javascript<br/>Foto por <a rel="nofollow" href="http://www.flickr.com/photos/jef/2668444189/">Jef Poskanzer</a> Erros Javascript
Foto por Jef Poskanzer

is_cnpj (em Javascript) - verifica se a string de entrada é um CNPJ válido. Se for válido, o CNPJ é retornado com 14 caracteres e sem formatação.

  • Não distingue CNPJ com ou sem formatação
    xxx.xxx.xxx/xxxx-xx ou xxxxxxxxxxxxxxx
  • Não faz diferença se o CNPJ é composto por 14, 15, 18 ou 19 caracteres
    xx.xxx.xxx/xxxx-xx, xxxxxxxxxxxxxx, xxx.xxx.xxx/xxxx-xx ou xxxxxxxxxxxxxxx
  • Se for válido, retorna o CNPJ com 14 caracteres e sem formatação
    xxxxxxxxxxxxxx

É altamente recomendado validar dados por Javascript para evitar o excesso de solicitações no servidor, economizando tráfego e processamento do servidor. Os dados são validados antes de serem enviados. Mas lembre-se de sempre validar do lado do servidor com uma linguagem server-side, como PHP ou Python, porque alguns navegadores desabilitam o Javascript, e mesmo que habilitado é fácil de ser manipulado.

Exemplos:

if (is_cnpj(cnpj)) {
	// CNPJ válido
}
else {
	// CNPJ inválido
}

// Se verdadeiro, a função retorna o CNPJ sem formatação e com 14 caracteres
cnpj = '10.530.985/0001-10';
if (cnpj = is_cnpj(cnpj)) { // atribuição e comparação
	// CNPJ válido
	alert(cnpj); // 10530985000110
}

// Erro comum de outros códigos, validar cadeia de zeros
if (is_cnpj('00.000.000/0000-00')) {
	// ...
}

// CNPJ com 19 caracteres
if (is_cnpj('010.530.985/0001-10')) {
	alert('cnpj válido');
}

// CNPJ sem formatação
if (is_cnpj(10530985000110)) {
	alert('cnpj válido');
}

Código fonte

function is_cnpj(str) {

	if (!(str = /^\d?(\d{2})\.?(\d{3})\.?(\d{3})\/?(\d{4})\-?(\d{2})/.exec(str)))
		return false;
		
	var sum1 = 0, sum2 = 0, sum3 = 0, calc1 = 5, calc2 = 6;
	
	str.shift();
	str = str.join("");
	
	for (var i=0; i <= 12; i++) {
		calc1 = (calc1 < 2) ? 9 : calc1;
		calc2 = (calc2 < 2) ? 9 : calc2;

		if (i <= 11)
			sum1 += str[i] * calc1;

		sum2 += str[i] * calc2;
		sum3 += str[i];
		calc1--;
		calc2--;
	}
	
	sum1 %= 11;
	sum2 %= 11;

	return (sum3 && str[12] == (sum1 < 2 ? 0 : 11 - sum1) && str[13] == (sum2 < 2 ? 0 : 11 - sum2)) ? str : false;
}


Comentar
captcha