9 de fevereiro de 2016

Validação de CPF em ASP (VBSCRIPT)

De repente precisamos de um validador via server-side de CPF, haja visto que vários na internet não funcionam corretamente e outros aceitam valores incorretos, segue à seguir um código encontrado que é totalmente funcional para qualquer tipo de CPF.

Lembre-se, a validação por server-side é essencial para garantir que dados não estejam entrando errado em seu sistema.






Function IsCPF(Cpf)
    Dim multiplic1,multiplic2
    multiplic1=Array(10,9,8,7,6,5,4,3,2)
    multiplic2=Array(11,10,9,8,7,6,5,4,3,2)
    Dim tempCpf,digit,sum,remainder,i,RegXP
    Cpf = Trim(Cpf)
    Cpf = Replace(Cpf,".", "")
    Cpf = Replace(Cpf,"-", "")
    If (Len(Cpf) <> 11) Then
        IsCPF = False
    Else
        tempCpf = Left(Cpf,9)
        sum = 0
        Dim intCounter
        Dim intLen
        Dim arrChars()
        intLen = Len(tempCpf)-1
        Redim arrChars(intLen)
        For intCounter = 0 to intLen
            arrChars(intCounter) = Mid(tempCpf, intCounter + 1,1)
        Next
        i=0
        For i = 0 to 8
            sum =sum + CInt(arrChars(i)) * multiplic1(i)
        Next
        remainder = sum Mod 11
        If (remainder < 2) Then
            remainder = 0
        Else
            remainder = 11 - remainder
        End If
        digit = CStr(remainder)
        tempCpf = tempCpf & digit
        sum = 0
        intLen = Len(tempCpf)-1
        Redim arrChars(intLen)
        intCounter= 0
        For intCounter = 0 to intLen
            arrChars(intCounter) = Mid(tempCpf, intCounter + 1,1)
        Next
        i=0
        For i = 0 to 9
            sum =sum + CInt(arrChars(i)) * multiplic2(i)
        Next     
        remainder = sum Mod 11
        If (remainder < 2) Then
            remainder = 0
        Else
            remainder = 11 - remainder
        End If   
        digit = digit & CStr(remainder)
        Set RegXP=New RegExp
            RegXP.IgnoreCase=1
            RegXP.Pattern=digit & "$"
        If RegXP.test(Cpf) Then
RegXP.Pattern="\b(\d)\1+\b"
If Not RegXP.test(Cpf) Then
IsCPF = True
Else
IsCPF = False
End if
        Else
            IsCPF = False
        End If
    End If
End Function


* Atualizado em 23/03/2019. A versão anterior estava com erro no cálculo de CPF que inicia-se com zero, ajuste realizado.

Fonte: http://stackoverflow.com/questions/11668350/cpf-validation-in-classic-asp

2 comentários :

Deixe seu comentário abaixo e curta Tutorial TI no facebook!