Percebi que ultimamente os CPFs vem mudando e com essa mudan�a a maioria dos c�digos encontrados na internet ficaram obsoletos.
Ent�o nas minhas buscas encontrei no pr�prio site da receita federal como fazer uma valida��o de um CPF.

Para o nosso exemplo vamos usar o CPF fict�cio 123.456.789-09
Vamos come�ar a valida��o pelo primeiro d�gito verificador, distribuindo os nove primeiros d�gitos do CPF.
Logo abaixo, da esquerda para a direita, vamos colocar os n�meros decrescentes de 10 � 2.
Ent�o vamos multiplicar as colunas, colocando o resutado de cada uma, em uma terceira linha, conforme mostrado a seguir:

Nove primeiros d�gitos antes do tra�o 1 2 3 4 5 6 7 8 9
Valor de 10 at� 2 para multiplicar 10 9 8 7 6 5 4 3 2
Resultado da multiplica��o 10 18 24 28 30 30 28 24 18

Agora somamos os resultados obtidos: 10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 = 210

OBS.: essa parte do c�lculo � que se diferencia nos sites em que o algoritmo ficou obsoleto

Pegamos o valor encontrado (210) multiplicamos por 10 e ent�o dividimos por 11. Vamos considerar para o quociente desta divis�o apenas o valor inteiro. O resto da divis�o ser� respons�vel pelo c�lculo do primeiro d�gito verificador:

(210 * 10) / 11 = 190
Resto = 10

Se o valor do resto da divis�o for igual a 10 ou 11, este valor ser� considerado automaticamente como 0 (zero), como � o caso de nosso exemplo.
Ent�o comparamos se o resto obtido � igual ao primeiro n�mero do d�gito verificador, caso n�o seja igual, o CPF � inv�lido e os passos seguintes n�o precisam ser feitos. No nosso caso � igual!

Resto encontrado Primeiro d�gito verificador
0 0 Resultados iguais!!

Caso a condi��o acima seja verdadeira ent�o repetimos os passos verificando agora os dez primeiros d�gitos (incluindo o primeiro d�tigo verificador)

Dez primeiros d�gitos 1 2 3 4 5 6 7 8 9 0
Valor de 11 at� 2 para multiplicar 11 10 9 8 7 6 5 4 3 2
Resultado da multiplica��o 11 20 27 32 35 36 35 32 27 0

Soma dos resultados obtidos: 11 + 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0 = 255

Pegamos o valor encontrado (255) multiplicamos por 10 e ent�o dividimos por 11. Vamos considerar para o quociente desta divis�o apenas o valor inteiro. O resto da divis�o ser� respons�vel pelo c�lculo do segundo d�gito verificador:

(255 * 10) / 11 = 231
Resto = 9

Se o valor do resto dessa segunda divis�o for igual a 10 ou 11, este valor ser� considerado automaticamente como 0 (zero), o que n�o � o caso de nosso exemplo.
Ent�o comparamos se o resto obtido � igual ao segundo numeral do d�gito verificador, caso n�o seja igual, o CPF � inv�lido. No nosso caso � igual!

Resto encontrado Segundo d�gito verificador
9 9 Resultados iguais!!

Caso a condi��o acima seja verdadeira ent�o o CPF � v�lido.

Veja o c�digo na integra retirado do c�digo fonte do site da receita federal

<script>
function TestaCPF(strCPF) {
    var Soma;
    var Resto;
    Soma = 0;
  if (strCPF == "00000000000") return false;
    
  for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i);
  Resto = (Soma * 10) % 11;
  
    if ((Resto == 10) || (Resto == 11))  Resto = 0;
    if (Resto != parseInt(strCPF.substring(9, 10)) ) return false;
  
  Soma = 0;
    for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i);
    Resto = (Soma * 10) % 11;
  
    if ((Resto == 10) || (Resto == 11))  Resto = 0;
    if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false;
    return true;
}
var strCPF = "12345678909";
alert(TestaCPF(strCPF));
</script>

Saiu na DevMedia!

  • D� o pr�ximo passo ap�s o HTML/CSS!:
    Nesta s�rie falamos sobre o que vem depois do HTML/CSS. Saiba o que � requisi��o, resposta e se prepare para os seus primeiros passos na programa��o back-end.

Saiba mais sobre JavaScript ;)

  • JavaScript Tutorial:
    Neste artigo veremos como utilizar o c�digo javascript em nossas aplica��es web e websites. Teremos uma introdu��o � essa maravilhosa linguagem que cada vez mais cresce no desenvolvimento web.
  • Guia Completo de JavaScript:
    Nesse guia conheceremos a linguagem de programa��o JavaScript, baseada em scripts client-side de p�ginas web e orientada a objetos. Veremos a sintaxe b�sica e bibliotecas que v�o nos ajudar a criar p�ginas ricas em recursos.

Links �teis