首页 > 编程 > VBScript > 正文

vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据

2019-10-26 17:59:29
字体:
来源:转载
供稿:网友
工作中需要用到身份证验证,还要支持检查15位和18位。
我一时手懒,问同事有没有现成的函数可用,同事google了一下,扔给我一个 asp-vbscript版本的函数。
可我这边是客户端javascript呀,于是用改 vbs-->js
改完发现蛮好用的,同时发现 vbscript真的很啰嗦,居然写了50多行,我改成js 只用了11行。
当然,我并完全是指vbscript啰嗦,那个写这段vbs代码的无名氏也是个唐僧性格.....

先放出 vbscript代码,   
复制代码 代码如下:

<script language="vbscript"> 

'功能:检查身份证号码 
Function CheckCardId(e)  
    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  
        CheckCardId= "身份证号共有 15 码或18位"  
        CheckCardId = 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  
        CheckCardId= "身份证除最后一位外,必须为数字!"          
        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          
            CheckCardId= "身份证输入错误!"  
            Exit Function  
        End If  
        If strMonth > 12 Or strDay > 31 Then  
            CheckCardId= "身份证输入错误!"  
            Exit Function  
        End If  
    Else  
        CheckCardId= "身份证输入错误!"  
        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   
    CheckCardId = Ai 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表