亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

vbscript和javascript版的15位, 18位的身份證號碼的驗證函數

2020-06-26 18:09:24
字體:
來源:轉載
供稿:網友
工作中需要用到身份證驗證,還要支持檢查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  

    If Len(e) = 18 And e <> Ai Then   
        CheckCardId= "身份證輸入錯誤!"   
        Exit Function   
    End If   
End Function   
</script> 

再放出 javascript版本代碼 
復制代碼代碼如下:

function checkId(pId){  
//檢查身份證號碼 Go_Rush(阿舜) from http://ashun.cnblogs.com  

    var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];  
    var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];  
    var Checker = [1,9,8,7,6,5,4,3,2,1,1];  

    if(pId.length != 15 && pId.length != 18)    return "身份證號共有 15 碼或18位";  

    var Ai=pId.length==18 ?  pId.substring(0,17)   :   pId.slice(0,6)+"19"+pId.slice(6,16);  

    if (!/^/d+$/.test(Ai))  return "身份證除最后一位外,必須為數字!";  

    var yyyy=Ai.slice(6,10) ,  mm=Ai.slice(10,12)-1  ,  dd=Ai.slice(12,14);  

    var d=new Date(yyyy,mm,dd) ,  now=new Date();  
     var year=d.getFullYear() ,  mon=d.getMonth() , day=d.getDate();  

    if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) return "身份證輸入錯誤!";  

    for(var i=0,ret=0;i<17;i++)  ret+=Ai.charAt(i)*Wi[i];      
    Ai+=arrVerifyCode[ret %=11];       

    return pId.length ==18 && pId != Ai?"身份證輸入錯誤!":Ai;          
}; 

至于身份證算法的原理,請參閱:  http://www.google.com/ 

最后,根據身份證號碼取  省份,生日,性別就很簡單了 
復制代碼代碼如下:

<script language="javascript">  
var id="342201570202003"   

//根據身份證取 省份,生日,性別  Go_Rush(阿舜) from http://ashun.cnblogs.com/  
function getInfo(id){  
    var arr=[null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","內蒙古"  
             ,null,null,null,null,null,"遼寧","吉林","黑龍江",null,null,null,null,null,null,null,"上海"  
             ,"江蘇","浙江","安微","福建","江西","山東",null,null,null,"河南","湖北","湖南","廣東","廣西","海南"  
             ,null,null,null,"重慶","四川","貴州","云南","西藏",null,null,null,null,null,null,"陜西","甘肅"  
             ,"青海","寧夏","新疆",null,null,null,null,null,"臺灣",null,null,null,null,null,null,null,null  
             ,null,"香港","澳門",null,null,null,null,null,null,null,null,"國外"]  
    id=checkId(id)  
    if (isNaN(id)) return "錯誤的身份證號碼"      
    var id=String(id),  prov=arr[id.slice(0,2)]  ,  sex=id.slice(14,17)%2?  "男" : "女"  
    var birthday=(new Date(id.slice(6,10) , id.slice(10,12)-1 , id.slice(12,14))).toLocaleDateString()   
    return [prov,birthday,sex]    
}  

alert(getInfo(id))   
</script> 

上面的代碼只能取到省份,要取到具體城市,請看我的另外一個隨筆,
代碼只拿我和幾個同事的身份證號碼測了一下,如果有Bug,請指出 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久伊人精品天天| 久久在线精品视频| 精品少妇一区二区30p| 国产精品久久久久久av| 欧美日韩在线一区| 久久资源免费视频| 国产精品69av| 91免费人成网站在线观看18| 啊v视频在线一区二区三区| 国产精品吴梦梦| 日韩激情视频在线播放| 91嫩草在线视频| 国产99久久精品一区二区 夜夜躁日日躁| 视频一区视频二区国产精品| 伊人久久大香线蕉av一区二区| 久久不射热爱视频精品| 国产在线播放不卡| 欧美性猛交视频| 国产精品精品国产| 97涩涩爰在线观看亚洲| 尤物精品国产第一福利三区| 国产成人久久精品| 欧美成人三级视频网站| 77777亚洲午夜久久多人| 亚洲片国产一区一级在线观看| 欧美超级免费视 在线| 国产成人精品久久久| 国产a∨精品一区二区三区不卡| 国产精品高清网站| 精品国产一区二区三区久久狼黑人| 欧美国产亚洲精品久久久8v| 国产99久久精品一区二区 夜夜躁日日躁| 精品高清美女精品国产区| www.日韩不卡电影av| 亚洲乱码国产乱码精品精天堂| 国产成人精品视频在线观看| 亚洲黄色片网站| 日本三级韩国三级久久| 91wwwcom在线观看| 中文字幕日韩在线观看| 欧美一区亚洲一区| 韩国日本不卡在线| 中文字幕精品视频| 国内偷自视频区视频综合| 欧美成人激情视频免费观看| 亚洲男人天堂久| 日韩在线视频免费观看高清中文| 亚洲人成五月天| 久久成人在线视频| 国外成人性视频| 欧美激情综合色| 日韩精品免费综合视频在线播放| 精品国产乱码久久久久久天美| 国产成人欧美在线观看| 97人人模人人爽人人喊中文字| 国产乱人伦真实精品视频| 欧美精品国产精品日韩精品| 欧美日产国产成人免费图片| 亚洲经典中文字幕| 久久人人爽人人爽人人片av高请| 欧美一区二区三区……| 欧美激情影音先锋| 亚洲天堂第二页| 欧美成人中文字幕在线| 国产午夜精品久久久| 国产精品成人在线| 国外日韩电影在线观看| 国产小视频91| 中文国产成人精品久久一| 91久久久国产精品| 欧美另类极品videosbestfree| 亚洲一区二区三区四区在线播放| 亚洲综合一区二区不卡| 久久精品国产亚洲7777| 久久免费视频网站| 亚洲最大福利视频网| 亚洲欧美日韩一区二区三区在线| 国产美女久久久| 在线观看日韩欧美| 欧洲亚洲免费在线| 欧美性videos高清精品| 欧美日韩国内自拍| 日韩h在线观看| 欧美日韩国产区| 欧美在线中文字幕| 国产免费亚洲高清| www.日韩免费| 欧美日韩免费一区| 成人av在线网址| 国产成人av网址| 91情侣偷在线精品国产| 国产精品精品久久久| 91黄色8090| 精品日韩中文字幕| 欧美日韩国内自拍| 国产精品麻豆va在线播放| 91chinesevideo永久地址| 91日本在线视频| www.xxxx精品| 久久精品国产一区二区电影| 中文字幕精品国产| 97在线免费视频| 国产a级全部精品| 97国产suv精品一区二区62| 精品欧美一区二区三区| 国产午夜精品视频免费不卡69堂| 欧美大荫蒂xxx| 国外成人免费在线播放| 日韩hd视频在线观看| 久久精品电影网站| 亚洲性69xxxbbb| 亚洲欧美一区二区精品久久久| 68精品国产免费久久久久久婷婷| 欧美裸体xxxx极品少妇软件| 久久久久国产精品www| 欧美极品少妇全裸体| 亚洲精品一区在线观看香蕉| 国产精品成人国产乱一区| 日韩欧美中文字幕在线观看| 久久成人免费视频| 欧美性生交xxxxx久久久| 中文字幕亚洲激情| 成人午夜高潮视频| 欧美电影在线观看完整版| 亚洲欧美成人一区二区在线电影| 国产精品人人做人人爽| 欧美在线欧美在线| 久久久久久亚洲精品不卡| 国产精品久久一区| 久久久久久亚洲精品不卡| 久久精品91久久香蕉加勒比| 欧美亚洲视频一区二区| 国产中文日韩欧美| 亚洲国产日韩欧美在线图片| 日韩精品一二三四区| 久久国产精品电影| 国产欧美一区二区三区在线| 亚洲黄在线观看| 69精品小视频| 欧美性生交xxxxxdddd| 国产精品高清网站| 日韩免费视频在线观看| 久久久精品久久| 色综合天天狠天天透天天伊人| 91在线观看免费| 国产精品福利观看| 日韩成人黄色av| 高清日韩电视剧大全免费播放在线观看| 色老头一区二区三区在线观看| 成人黄色av免费在线观看| 亚洲午夜av电影| 亚洲国产天堂久久国产91| 亚洲香蕉av在线一区二区三区| 久久久91精品国产一区不卡| 国产精品欧美日韩一区二区| 日韩精品免费视频| 亚洲精品久久久一区二区三区| 欧美精品久久久久| 57pao成人永久免费视频| 一区二区三欧美| 国产精品美腿一区在线看| 国产美女扒开尿口久久久| 国产精品免费视频久久久| 久久久久久国产精品久久|