Esta função é muito útil na validação do CPF passado por parâmetro.
A função também verifica se o CPF está digitado no formato correto utilizando Expressão Regular.
Na função o CPF pode ser digitado em 2 formatos diferentes:
XXXXXXXXX-XX ou XXX.XXX.XXX-XX.
<%
‘—————————————————–
‘Funcao: IsCPF(ByVal intNumero)
‘Sinopse: Verifica se o valor passado é um CPF válido
‘ Formatos aceitos: XXX.XXX.XXX-XX ou
‘ XXXXXXXXXXXXXX
‘Parametro: intNumero
‘Retorno: Booleano
‘Autor: Gabriel Fróes - www.codigofonte.com.br
‘—————————————————–
Function IsCPF(ByVal intNumero)
‘Validando o formato do CPF com expressão regular
Set regEx = New RegExp ‘Cria o Objeto Expressão
regEx.Pattern = “d{3}.?d{3}.?d{3}-?d{2}” ‘ Expressão Regular
regEx.IgnoreCase = True ‘ Sensitivo ou não
regEx.Global = True
Retorno = RegEx.Test(intNumero)
Set regEx = Nothing
‘Caso seja verdadeiro posso validar se o CPF é válido
If Retorno = True Then
‘Validando a sequencia números
Dim CPF_temp
CPF_temp = intNumero
CPF_temp = Replace(CPF_temp, “.”, “”)
CPF_temp = Replace(CPF_temp, “-”, “”)
CPF_Digito_temp = Right(CPF_temp, 2)
‘Somando os nove primeiros digitos do CPF
Soma = (Clng(Mid(CPF_temp,1,1)) * 10) + (Clng(Mid(CPF_temp,2,1)) * 9) + (Clng(Mid(CPF_temp,3,1)) * 8) + (Clng(Mid(CPF_temp,4,1)) * 7) + (Clng(Mid(CPF_temp,5,1)) * 6) + (Clng(Mid(CPF_temp,6,1)) * 5) + (Clng(Mid(CPF_temp,7,1)) * 4) + (Clng(Mid(CPF_temp,8,1)) * 3) + (Clng(Mid(CPF_temp,9,1)) * 2)
‘———————————-
‘Calculando o 1º dígito verificador
‘———————————-
‘Pegando o resto da divisão por 11
Resto = (Soma Mod 11)
If Resto = 1 Or Resto = 0 Then
DigitoHum = 0
Else
DigitoHum = Cstr(11-Resto)
End If
‘———————————-
‘———————————-
‘Calculando o 2º dígito verificador
‘———————————-
‘Somando os 9 primeiros digitos do CPF mais o 1º dígito
Soma = (Clng(Mid(CPF_temp,1,1)) * 11) + (Clng(Mid(CPF_temp,2,1)) * 10) + (Clng(Mid(CPF_temp,3,1)) * 9) + (Clng(Mid(CPF_temp,4,1)) * 8) + (Clng(Mid(CPF_temp,5,1)) * 7) + (Clng(Mid(CPF_temp,6,1)) * 6) + (Clng(Mid(CPF_temp,7,1)) * 5) + (Clng(Mid(CPF_temp,8,1)) * 4) + (Clng(Mid(CPF_temp,9,1)) * 3) + (DigitoHum * 2)
‘Pegando o resto da divisão por 11
Resto = (Soma Mod 11)
If Resto = 1 Or Resto = 0 Then
DigitoDois = 0
Else
DigitoDois = Cstr(11-Resto)
End If
‘———————————-
‘Verificando se os digitos são iguais aos digítados.
DigitoCPF = Cstr(DigitoHum) & Cstr(DigitoDois)
If Cstr(CPF_Digito_temp) = Cstr(DigitoCPF) Then
Retorno = True
Else
Retorno = False
End If
End If
IsCPF = Retorno
End Function
%>
Agosto 23, 2007 às 9:38 pm
eu preciso regular cpf
Setembro 30, 2007 às 11:03 pm
Se esse algoritmo estivesse certo, meu CPF estaria errado.
É pra somar os 9 primeiro, pegar o MOD com 11, se for 0 ou 1 vira 0, se não 11- o MOD, e repetir a operação com o segundo, incluindo na soma o número conseguido?
Dezembro 1, 2007 às 1:15 pm
desejo cadastrar o meu cpf.
Dezembro 19, 2007 às 7:23 pm
aqui funcionou. basta trocar a expressao regular para “\d{3}\.?\d{3}\.?\d{3}-?\d{2}”
Julho 24, 2008 às 5:03 pm
Valeu André sua solução me livrou de um problemão.
Só um complemento para ela.
Eliminar números maiores que 11 dígitos
e sequencias de 1 – 9 (“11111111111″)
if len(CPF_temp) > 11 then
Retorno = false
end if
if CPF_temp = “11111111111″ or CPF_temp = “22222222222″ or CPF_temp = “33333333333″ or CPF_temp = “44444444444″ or CPF_temp = “55555555555″ then
Retorno = false
end if
if CPF_temp = “66666666666″ or CPF_temp = “77777777777″ or CPF_temp = “88888888888″ or CPF_temp = “99999999999″ or CPF_temp = “00000000000″ then
Retorno = false
end if
Julho 24, 2008 às 6:05 pm
Só mais uma pequena mudança.
ao invés de eliminar números maiores que 11 dígitos
eliminar números diferentes de 11 digitos que valida tanto pra mais como pra menos.
if len(CPF_temp) 11 then
Retorno = false
end if
Julho 24, 2008 às 6:05 pm
if len(CPF_temp) “” 11 then
Retorno = false
end if
Março 30, 2009 às 3:54 pm
quero cadastrar cpf de forma obrigatoria anualmente, e nao esta em dias por nunca cadastrei. peço que mim ajude
Julho 10, 2009 às 10:40 am
Prezado André,
Não vejo problema nenhum em copiar o código que fiz e colocar em seu site… o problema é que você não colocou nenhum crédito e nem o link original.
(http://codigofonte.uol.com.br/codigo/asp/validacao/validar-cpf-com-expressao-regular)