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.