当前位置:编程学习 > JAVA >>

javascript验证身份证完全方法

下面这段代码完全实现了判断身份证是否合格.传入身份证号码就行了。包括了公安部的算法。下面的是用Ext实现的。但是基于javascript的语法居多,基本都可以用。

[plain]
var certCardValid = function(id){ 
        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]; 
        var msg = ""; 
        if(id.length != 15 && id.length != 18) { 
            Ext.MessageBox.alert("信息提示","身份证号共有15位或18位。"); 
            return false; 
        } 
         
        var ai = id.length == 18 ?  id.substring(0,17) : id.slice(0,6) + "19" + id.slice(6,16); 
 
 
        if (!/^\d+$/.test(ai)) { 
            Ext.MessageBox.alert("信息提示","身份证除最后一位外,必须为数字。"); 
            return false; 
        }  
 
 
        var yyyy = ai.slice(6,10); 
        var mm = ai.slice(10,12)-1;  
        var dd = ai.slice(12,14); 
        var d = new Date(yyyy,mm,dd); 
        var now = new Date(); 
        var year = d.getFullYear(); 
        var mon = d.getMonth();  
        var day = d.getDate(); 
 
 
        if (year != yyyy || mon != mm || day != dd) { 
            Ext.MessageBox.alert("信息提示","身份证无效。"); 
            return false; 
        } 
 
 
        for(var i = 0,ret = 0; i < 17; i++){ 
            ret += ai.charAt(i) * wi[i]; 
        } 
         
        ai += arrVerifyCode[ret %= 11]; 
        ai = ai.toUpperCase(); 
 
 
        if(id.length == 18 && id != ai){ 
            Ext.MessageBox.alert("信息提示","身份证无效。"); 
            return false; 
        } 
        return true; 
    }; 

 


摘自 Jason的Java专栏

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,