<cfscript> /** * Checa se um CPF específico (Brasil) é válido. * * @param inputCPF O CPF (000.000.000-00) para checar. * @return Retorna um boolean. */ function CPFvalidate(thisCPF) { var thisCPFdigitos = ""; var thisDigit = 0; var thisCPFlen = 0; var somaDigitoUm = 0; var somaDigitoDois = 0; var digitoUm = 0; var digitoDois = 0; var i = 0; thisCPF = Replace(thisCPF, " ", "", "ALL"); thisCPF = Replace(thisCPF, ".", "", "ALL"); thisCPF = Replace(thisCPF, "-", "", "ALL"); thisCPFlen = len(thisCPF); // Numérico, 11 dígitos e maior que zero (no caso 000.000.000-00) if (NOT (IsNumeric(thisCPF) AND thisCPFlen EQ 11 AND thisCPF GT 0)) return false; // Separa o número e digitos verificadores thisCPFdigitos = right(thisCPF, 2); thisCPF = left(thisCPF, 9); // Por exemplo 111.111.111-11, 222.222.222-22, etc. // O caso 000.000.000-00 é tratato em thisCPF GT 0, acima. // Só faz tal verificação se os dígitos forem maior que zero (não se pode //dividir por zero) if (thisCPFdigitos AND int(thisCPF/thisCPFdigitos) EQ 10101010) return false; for(i=10; i GT 1; i=i-1) { thisDigit = mid(thisCPF, 11-i, 1); somaDigitoUm = somaDigitoUm + thisDigit * i; } digitoUm = somaDigitoUm * 10 MOD 11; if (digitoUm EQ 10) digitoUm = 0; thisCPF = thisCPF & digitoUm; for(i=11; i GT 1; i=i-1) { thisDigit = mid(thisCPF, 12-i, 1); somaDigitoDois = somaDigitoDois + thisDigit * i; } digitoDois = somaDigitoDois * 10 MOD 11; if (digitoDois EQ 10) digitoDois = 0; if (digitoUm & digitoDois EQ thisCPFdigitos) return true; else return false; } </cfscript>
0 comentários:
Postar um comentário