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