Função JavaScript para validar CNPJ
Para ajudar o programador, resolvi escrever uma função em JavaScript para validar o CNPJ de uma empresa. O código é 100% livre, portanto sinta-se livre para copiar, modificar ou fazer o que quiser com a função:
function validaCNPJ (cnpj) {
var b = [ 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 ]
var c = String(cnpj).replace(/[^\d]/g, '')
if(c.length !== 14)
return false
if(/0{14}/.test(c))
return false
for (var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n))
return false
for (var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n))
return false
return true
}
Isso resolveu o seu problema? Se sim, lembre-se de deixar um comentário no final do artigo com sua opinião. Abaixo, seguiremos detalhando o funcionamento do código.
Testando a função de validação:
Abaixo podemos testar nossa função de validação. Experimente informar alguns números de CNPJ com ou sem formação, pois a própria função no momento de validar remove os caracteres extras. Tente alguns números para ver o que acontece:
Caso não tenha nenhum CNPJ para testar, você pode gerar um automaticamente no site geradorcnpj.com.
Como funciona a função de validar CNPJ?
Para entender como funciona a função em JavaScript, antes mesmo de saber como validar, primeiramente precisamos entender a composição do CNPJ. O número do CNPJ é composto por três segmentos numéricos:
- Número da inscrição
- Número de filiais (logo após a barra)
- Os últimos dois valores são os dígitos verificadores
Logo, temos o formato CNPJ da seguinte forma:
[inscrição]/[filiais]-[verificadores]
Agora, vamos a validação na função. Primeiramente, definimos os números que irão multiplicar aos dígitos do CNPJ para realizar a verificação:
var b = [ 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 ]
Então, limpamos a string do CNPJ para remover toda formatação. Removemos dessa forma todo e qualquer caractere que não seja numérico:
var c = String(cnpj).replace(/^[^\d]/g, '')
A partir disso, verificamos se o CNPJ contém os 14 dígitos. Se for diferente, a função deve retornar false
:
if (c.length !== 14)
return false
Também verificamos se o CNPJ foi inserido como "000000000/0000-00". Mesmo passando pela lógica do algoritmo isso ainda seria possível, então precisamos eliminar essa possibilidade:
if (/0{14}/.test(c))
return false
Em seguida, realizamos a primeira verificação dos cálculos com multiplicação. O resultado deve ser igual ao penúltimo número do CNPJ que é o primeiro dígito verificador:
for (var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
if (c[12] != (((n %= 11) < 2) ? 0 : 11 - n))
return false
Agora, fazemos a segunda verificação com multiplicação para o segundo dígito verificador, ou seja, o último dígito do CNPJ:
for (var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
if (c[13] != (((n %= 11) < 2) ? 0 : 11 - n))
return false
Por fim, caso o número tenha passado por todas as validações, a função deve retornar true
. Dessa forma, ao fim da função, nosso CNPJ é considerado válido:
return true
Você pode conferir detalhadamente o algoritmo que valida a sequência numérica do CNPJ em no site Macoratti.net.
O que achou do artigo?
Escreva um comentário, deixe-me saber o que achou do artigo. Se tens uma dúvida basta perguntar:
Resposta ao comentário:
10 Comentários