asp檢查身份證函數(shù)

字號:


    Function IDCheck(e)
    IDCheck = true
    arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",")
    Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",")
    Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",")
    If Len(e) < 15 Or Len(e) = 16 Or Len(e) = 17 Or Len(e) > 18 Then
    'IDCheck= "身份證號共有 15 碼或18位"
    IDCheck = False
    Exit Function
    End If
    Dim Ai
    If Len(e) = 18 Then
    Ai = Mid(e, 1, 17)
    ElseIf Len(e) = 15 Then
    Ai = e
    Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9)
    End If
    If Not IsNumeric(Ai) Then
    'IDCheck= "身份證除最后一位外,必須為數(shù)字!"
    IDCheck = False
    Exit Function
    End If
    Dim strYear, strMonth, strDay
    strYear = CInt(Mid(Ai, 7, 4))
    strMonth = CInt(Mid(Ai, 11, 2))
    strDay = CInt(Mid(Ai, 13, 2))
    BirthDay = Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay)
    If IsDate(BirthDay) Then
    If DateDiff("yyyy",Now,BirthDay)<-140 or cdate(BirthDay)>date() Then
    'IDCheck= "身份證輸入錯誤!"
    IDCheck = False
    Exit Function
    End If
    If strMonth > 12 Or strDay > 31 Then
    IDCheck = False
    'IDCheck= "身份證輸入錯誤!"
    Exit Function
    End If
    Else
    'IDCheck= "身份證輸入錯誤!"
    IDCheck = False
    Exit Function
    End If
    Dim i, TotalmulAiWi
    For i = 0 To 16
    TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i)
    Next
    Dim modValue
    modValue = TotalmulAiWi Mod 11
    Dim strVerifyCode
    strVerifyCode = arrVerifyCode(modValue)
    Ai = Ai & strVerifyCode
    IDCheck = true '此處設(shè)置輸出身份證號
    If Len(e) = 18 And e <> Ai Then
    'IDCheck= "身份證號碼輸入錯誤!"
    IDCheck = False
    Exit Function
    End If
    End Function