PageSourceSearch

https://lojagraficaeskenazi.com.br/files/skins/fbf872e0-2e5f-4649-…/hubspot/js/validaCPFCNPJ.js

js lojagraficaeskenazi.com.br collected 2026-09-26 12:27:27 UTC 6,959 bytes, 272 lines download raw bytes

1// JavaScript Document
2
3/*
4 verifica_cpf_cnpj
5 
6 Verifica se é CPF ou CNPJ
7 
8 @see http://www.todoespacoonline.com/w/
9*/
10function verifica_cpf_cnpj ( valor ) {
11 
12    // Garante que o valor é uma string
13    valor = valor.toString();
14    
15    // Remove caracteres inválidos do valor
16    valor = valor.replace(/[^0-9]/g, '');
17 
18    // Verifica CPF
19    if ( valor.length === 11 ) {
20        return 'CPF';
21    } 
22    
23    // Verifica CNPJ
24    else if ( valor.length === 14 ) {
25        return 'CNPJ';
26    } 
27    
28    // Não retorna nada
29    else {
30        return false;
31    }
32    
33} // verifica_cpf_cnpj
34 
35/*
36 calc_digitos_posicoes
37 
38 Multiplica dígitos vezes posições
39 
40 @param string digitos Os digitos desejados
41 @param string posicoes A posição que vai iniciar a regressão
42 @param string soma_digitos A soma das multiplicações entre posições e dígitos
43 @return string Os dígitos enviados concatenados com o último dígito
44*/
45function calc_digitos_posicoes( digitos, posicoes = 10, soma_digitos = 0 ) {
46 
47    // Garante que o valor é uma string
48    digitos = digitos.toString();
49 
50    // Faz a soma dos dígitos com a posição
51    // Ex. para 10 posições:
52    //   0    2    5    4    6    2    8    8   4
53    // x10   x9   x8   x7   x6   x5   x4   x3  x2
54    //   0 + 18 + 40 + 28 + 36 + 10 + 32 + 24 + 8 = 196
55    for ( var i = 0; i < digitos.length; i++  ) {
56        // Preenche a soma com o dígito vezes a posição
57        soma_digitos = soma_digitos + ( digitos[i] * posicoes );
58 
59        // Subtrai 1 da posição
60        posicoes--;
61 
62        // Parte específica para CNPJ
63        // Ex.: 5-4-3-2-9-8-7-6-5-4-3-2
64        if ( posicoes < 2 ) {
65            // Retorno a posição para 9
66            posicoes = 9;
67        }
68    }
69 
70    // Captura o resto da divisão entre soma_digitos dividido por 11
71    // Ex.: 196 % 11 = 9
72    soma_digitos = soma_digitos % 11;
73 
74    // Verifica se soma_digitos é menor que 2
75    if ( soma_digitos < 2 ) {
76        // soma_digitos agora será zero
77        soma_digitos = 0;
78    } else {
79        // Se for maior que 2, o resultado é 11 menos soma_digitos
80        // Ex.: 11 - 9 = 2
81        // Nosso dígito procurado é 2
82        soma_digitos = 11 - soma_digitos;
83    }
84 
85    // Concatena mais um dígito aos primeiro nove dígitos
86    // Ex.: 025462884 + 2 = 0254628842
87    var cpf = digitos + soma_digitos;
88 
89    // Retorna
90    return cpf;
91    
92} // calc_digitos_posicoes
93 
94/*
95 Valida CPF
96 
97 Valida se for CPF
98 
99 @param  string cpf O CPF com ou sem pontos e traço
100 @return bool True para CPF correto - False para CPF incorreto
101*/
102function valida_cpf( valor ) {
103 
104    // Garante que o valor é uma string
105    valor = valor.toString();
106    
107    // Remove caracteres inválidos do valor
108    valor = valor.replace(/[^0-9]/g, '');
109 
110 
111    // Captura os 9 primeiros dígitos do CPF
112    // Ex.: 02546288423 = 025462884
113    var digitos = valor.substr(0, 9);
114 
115    // Faz o cálculo dos 9 primeiros dígitos do CPF para obter o primeiro dígito
116    var novo_cpf = calc_digitos_posicoes( digitos );
117 
118    // Faz o cálculo dos 10 dígitos do CPF para obter o último dígito
119    var novo_cpf = calc_digitos_posicoes( novo_cpf, 11 );
120 
121    // Verifica se o novo CPF gerado é idêntico ao CPF enviado
122    if ( novo_cpf === valor ) {
123        // CPF válido
124        return true;
125    } else {
126        // CPF inválido
127        return false;
128    }
129    
130} // valida_cpf
131 
132/*
133 valida_cnpj
134 
135 Valida se for um CNPJ
136 
137 @param string cnpj
138 @return bool true para CNPJ correto
139*/
140function valida_cnpj ( valor ) {
141 
142    // Garante que o valor é uma string
143    valor = valor.toString();
144    
145    // Remove caracteres inválidos do valor
146    valor = valor.replace(/[^0-9]/g, '');
147 
148    
149    // O valor original
150    var cnpj_original = valor;
151 
152    // Captura os primeiros 12 números do CNPJ
153    var primeiros_numeros_cnpj = valor.substr( 0, 12 );
154 
155    // Faz o primeiro cálculo
156    var primeiro_calculo = calc_digitos_posicoes( primeiros_numeros_cnpj, 5 );
157 
158    // O segundo cálculo é a mesma coisa do primeiro, porém, começa na posição 6
159    var segundo_calculo = calc_digitos_posicoes( primeiro_calculo, 6 );
160 
161    // Concatena o segundo dígito ao CNPJ
162    var cnpj = segundo_calculo;
163 
164    // Verifica se o CNPJ gerado é idêntico ao enviado
165    if ( cnpj === cnpj_original ) {
166        return true;
167    }
168    
169    // Retorna falso por padrão
170    return false;
171    
172} // valida_cnpj
173 
174/*
175 valida_cpf_cnpj
176 
177 Valida o CPF ou CNPJ
178 
179 @access public
180 @return bool true para válido, false para inválido
181*/
182function valida_cpf_cnpj ( valor ) {
183 
184    // Verifica se é CPF ou CNPJ
185    var valida = verifica_cpf_cnpj( valor );
186 
187    // Garante que o valor é uma string
188    valor = valor.toString();
189    
190    // Remove caracteres inválidos do valor
191    valor = valor.replace(/[^0-9]/g, '');
192 
193 
194    // Valida CPF
195    if ( valida === 'CPF' ) {
196        // Retorna true para cpf válido
197        return valida_cpf( valor );
198    } 
199    
200    // Valida CNPJ
201    else if ( valida === 'CNPJ' ) {
202        // Retorna true para CNPJ válido
203        return valida_cnpj( valor );
204    } 
205    
206    // Não retorna nada
207    else {
208        return false;
209    }
210    
211} // valida_cpf_cnpj
212 
213/*
214 formata_cpf_cnpj
215 
216 Formata um CPF ou CNPJ
217 
218 @access public
219 @return string CPF ou CNPJ formatado
220*/
221function formata_cpf_cnpj( valor ) {
222 
223    // O valor formatado
224    var formatado = false;
225    
226    // Verifica se é CPF ou CNPJ
227    var valida = verifica_cpf_cnpj( valor );
228 
229    // Garante que o valor é uma string
230    valor = valor.toString();
231    
232    // Remove caracteres inválidos do valor
233    valor = valor.replace(/[^0-9]/g, '');
234 
235 
236    // Valida CPF
237    if ( valida === 'CPF' ) {
238    
239        // Verifica se o CPF é válido
240        if ( valida_cpf( valor ) ) {
241        
242            // Formata o CPF ###.###.###-##
243            formatado  = valor.substr( 0, 3 ) + '.';
244            formatado += valor.substr( 3, 3 ) + '.';
245            formatado += valor.substr( 6, 3 ) + '-';
246            formatado += valor.substr( 9, 2 ) + '';
247            
248        }
249        
250    }
251    
252    // Valida CNPJ
253    else if ( valida === 'CNPJ' ) {
254    
255        // Verifica se o CNPJ é válido
256        if ( valida_cnpj( valor ) ) {
257        
258            // Formata o CNPJ ##.###.###/####-##
259            formatado  = valor.substr( 0,  2 ) + '.';
260            formatado += valor.substr( 2,  3 ) + '.';
261            formatado += valor.substr( 5,  3 ) + '/';
262            formatado += valor.substr( 8,  4 ) + '-';
263            formatado += valor.substr( 12, 14 ) + '';
264            
265        }
266        
267    } 
268 
269    // Retorna o valor 
270    return formatado;
271    
272} // formata_cpf_cnpj

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.