function IsChinaIDCard(strNo)
{   
    var code = strNo.substr(0,3);
    if(!CheckIDCardCode(code))
        return false;
    if(strNo.length==18)   
    {   
        var a,b,c;
        if(!IsInteger(strNo.substr(0,17)))
        {
            return false;
        }   
        a=parseInt(strNo.substr(0,1))*7+parseInt(strNo.substr(1,1))*9+parseInt(strNo.substr(2,1))*10;   
        a=a+parseInt(strNo.substr(3,1))*5+parseInt(strNo.substr(4,1))*8+parseInt(strNo.substr(5,1))*4;   
        a=a+parseInt(strNo.substr(6,1))*2+parseInt(strNo.substr(7,1))*1+parseInt(strNo.substr(8,1))*6;     
        a=a+parseInt(strNo.substr(9,1))*3+parseInt(strNo.substr(10,1))*7+parseInt(strNo.substr(11,1))*9;     
        a=a+parseInt(strNo.substr(12,1))*10+parseInt(strNo.substr(13,1))*5+parseInt(strNo.substr(14,1))*8;     
        a=a+parseInt(strNo.substr(15,1))*4+parseInt(strNo.substr(16,1))*2;   
        b=a%11;   
        
        if(b==2)//最后一位为校验位   
        {   
            c=strNo.substr(17,1).toUpperCase();//转为大写X   
        }   
        else   
        {   
            c=parseInt(strNo.substr(17,1));   
        }   
        switch(b)   
        {   
	        case 0:   
	            if(c!=1)
	            {
		            //alert("身份证号码校验位错:最后一位应该为:1");
		            return false;
	            }
	            break;   
            case 1:   
                if (c!=0)
                {
		            //alert("身份证号码校验位错:最后一位应该为:0");
		            return false;
                }
                break;   
            case 2:   
                if(c!="X")
                {
            	    //alert("身份证号码校验位错:最后一位应该为:X");
            	    return false;
                }
                break;   
            case 3:   
                if(c!=9)   
                {   //alert("身份证号码校验位错:最后一位应该为:9");
                    return false;
                }
                break;   
            case 4:   
                if(c!=8)
                {
                    //alert("身份证号码校验位错:最后一位应该为:8");
                    return false;
                }
                break;   
            case 5:   
                if(c!=7)   
                {   
                    //alert("身份证号码校验位错:最后一位应该为:7");
                    return false;
                }
                break;   
            case 6:   
                if(c!=6 )   
                {
                    //alert("身份证号码校验位错:最后一位应该为:6");
                    return false;
                }
                break;   
            case 7:   
                if(c!=5)
                {
                    //alert("身份证号码校验位错:最后一位应该为:5");
                    return false;
                }
                break;   
            case 8:  
                if(c!=4)
                {
                    //alert("身份证号码校验位错:最后一位应该为:4");
                    return false;
                }
                break;   
            case 9:   
                if(c!=3)
                {
                    //alert("身份证号码校验位错:最后一位应该为:3");
                    return false;
                }
                break;   
            case 10:   
                if(c!=2)
                {
                    //alert("身份证号码校验位错:最后一位应该为:2");
                    return false;
                }   
                break;  
            }   
        }   
        else   //15位身份证号   
        {   
            if(!IsInteger(strNo))   
            {   
                //alert("身份证号码错误,前15位不能含有英文字母!");
                return false;
            }     
        }   
        
        switch(strNo.length)
        {   
            case 15:     
                if(IsValidDate("19"+strNo.substr(6,2),strNo.substr(8,2),strNo.substr(10,2)))   
                {
                    return true;
                }   
                else   
                {
                    return false;
                }   
                break;
            case 18:     
                if(IsValidDate(strNo.substr(6,4),strNo.substr(10,2),strNo.substr(12,2)))   
                {
                    return true;
                }   
                else   
                {
                    return false;
                }  
                break;
      }   
      //alert("输入的身份证号码必须为15位或者18位!");   
      return   false;         
}   
    
function IsValidDate(iY, iM, iD)   
{     
    var a=new   Date(iY,iM-1,iD);   
    var y=a.getFullYear();   
    var m=a.getMonth()+1;   
    var d=a.getDate();   
    if(y!=iY || m!=iM || d!=iD)   
    {   
        //window.alert   ('身份证号码内日期错误!');   
        return false;   
    }   
    return true   
}   
    
function IsInteger(str)   
{   
    if(/[^\d]+$/.test(str))
    {   
        return false;   
    }   
    return true;   
}

function IsAdult(year,month,day){
	var year_18 = parseInt(year,10)+18;
	var id_date = new Date(year_18,month-1,day);
	var cur_date = new Date();
	if(Date.parse(cur_date)>=Date.parse(id_date)){//matured
		//alert("根据您填写的身份证信息判定您的年龄超过18岁,所注册帐号将不被纳入防沉迷系统。");
		return true;
	}
	else
	{
	    //alert('根据您填写的身份证信息判定您的年龄未满18岁,属未成年人,所注册帐号将被纳入防沉迷系统。');
		return false;
	}
}
function IsHoldUserName(userName)
{
    var userNames0 = new Array("master", "54265587", "54263211", "t2cn", "cjit2", "wushuangol", "webmaster", "everyone");
    var userNames1 = new Array("caocao", "caopi", "caoren", "daqiao", "dianwei", "diaochan", "dongzhuo", "ganning", "guanping", "guanyu", "huanggai", "huangyueying", "huangzhong", "jiangwei", "lingtong", "liubei", "luxun", "lvbu", "lvmeng", "machao", "menghuo", "panged", "pangtong", "simayi", "sunce", "sunjian", "sunquan", "sunshangxiang", "taishici", "weiyan", "xiahoudun", "xiahouyuan", "xiaoqiao", "xingcai", "xuhuang", "xuzhu", "yuanshao", "zhangfei", "zhanghe", "zhangjiao", "zhangliao", "zhaoyun", "zhenji", "zhoutai", "zhouyu", "zhugeliang", "zhurongfuren", "zuoci", "wushuang", "Cji", "Gamemaster", "Tianxi", "Koei", "Musou", "Sanguo", "Vip", "gm", "10sea", "admin", "guest");
    var userNames2 = new Array("caocao", "caopi", "caoren", "daqiao", "dianwei", "diaochan", "dongzhuo", "ganning", "guanping", "guanyu", "huanggai", "huangyueying", "huangzhong", "jiangwei", "lingtong", "liubei", "luxun", "lvbu", "lvmeng", "machao", "menghuo", "panged", "pangtong", "simayi", "sunce", "sunjian", "sunquan", "sunshangxiang", "taishici", "weiyan", "xiahoudun", "xiahouyuan", "xiaoqiao", "xingcai", "xuhuang", "xuzhu", "yuanshao", "zhangfei", "zhanghe", "zhangjiao", "zhangliao", "zhaoyun", "zhenji", "zhoutai", "zhouyu", "zhugeliang", "zhurongfuren", "zuoci", "wushuang", "cji", "gamemaster", "tianxi", "koei", "musou", "sanguo", "gm", "10sea", "admin");
    for(i=0;i<userNames0.length;i++)
    {
        if(userName.toLowerCase() == userNames0[i].toLowerCase())
        {
            //alert("全匹配帐号");
            return true;
        }
    }
    for(i=0;i<userNames1.length;i++)
    {
        if (userName.toLowerCase().indexOf(userNames1[i].toLowerCase()) == 0)
        {
            //alert("前缀帐号");
            return true;
        }
    }
    for(i=0;i<userNames2.length;i++)
    {
        var index = userName.toLowerCase().lastIndexOf(userNames2[i].toLowerCase());
        if (index >= 0 && index + userNames2[i].length == userName.length)
        {
            //alert("后缀帐号");
            return true;
        }
    }
    return false;
}
function CheckIDCardCode(code)
{
    var codes = new Array("110|北京市", "120|天津市", "130|河北省","131|河北省", "132|河北省","133|河北省", "139|河北省", "140|山西省", "141|山西省",
        "142|山西省", "149|山西省","150|内蒙古自治区", "152|内蒙古自治区", "210|辽宁省", "211|辽宁省", "212|辽宁省", "219|辽宁省", "220|吉林省", 
        "222|吉林省", "229|吉林省", "230|黑龙江省", "231|黑龙江省", "232|黑龙江省", "239|黑龙江省","310|上海市", "320|江苏省", "321|江苏省",
        "330|浙江省", "331|浙江省", "332|浙江省", "339|浙江省", "340|安徽省", "341|安徽省", "342|安徽省", "350|福建省", "352|福建省", "359|福建省", 
        "360|江西省", "361|江西省", "362|江西省", "370|山东省", "371|山东省", "372|山东省", "379|山东省", "410|河南省", "411|河南省", "412|河南省", 
        "413|河南省", "419|河南省", "420|湖北省", "421|湖北省", "422|湖北省", "423|湖北省", "429|湖北省", "430|湖南省", "431|湖南省", "432|湖南省", 
        "433|湖南省", "439|湖南省", "440|广东省", "441|广东省", "442|广东省", "445|广东省", "450|广西壮族自治区", "451|广西壮族自治区", 
        "452|广西壮族自治区", "460|海南省","469|海南省", "500|重庆市", "510|四川省", "511|四川省", "512|四川省", "513|四川省", "519|四川省", 
        "520|贵州省", "522|贵州省", "530|云南省", "532|云南省", "533|云南省", "540|西藏自治区", "542|西藏自治区", "610|陕西省", "611|陕西省", 
        "612|陕西省", "620|甘肃省", "621|甘肃省", "622|甘肃省", "623|甘肃省", "630|青海省", "632|青海省", "640|宁夏回族自治区", "642|宁夏回族自治区", 
        "650|新疆维吾尔自治区", "652|新疆维吾尔自治区", "653|新疆维吾尔自治区", "654|新疆维吾尔自治区", "659|新疆维吾尔自治区",  "710|台湾省", 
        "810|香港特别行政区", "820|澳门特别行政区");
    for(i=0;i<codes.length;i++)
    {
        if(code == codes[i].substr(0,3))
        {
            //alert("身份证前3位代码正确");
            return true;
        }
    }
    return false;
}
posted on 2012-10-09 13:07  易成波  阅读(1263)  评论(0编辑  收藏  举报