强身份证号校验规则
Util.isCardID = function (id) {
var areaCodeGroup = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"
};
var is15Length=false;
var is18Length=false;
var yearBirthday="",monthBirthday="",dayBirthday="";
if(/^\d{17}(\d|x)$/i.test(id)){
is18Length=true;
}
else if(/^\d{15}$/i.test(id)){
is15Length=true;
}
else {
return false;
}
var provinceCode=id.substr(0, 2);
if(!areaCodeGroup[provinceCode]){
return false
}
if(is18Length){
yearBirthday=id.substr(6, 4);
monthBirthday=id.substr(10, 2);
dayBirthday=id.substr(12, 2);
if(!Util.isValidDate("{0}/{1}/{2}".format(yearBirthday,monthBirthday,dayBirthday))){
return false;
}
if(!Util.isValidID(id)){
return false;
}
}
else if(is15Length){
yearBirthday="19"+id.substr(6, 2);
monthBirthday=id.substr(8, 2);
dayBirthday=id.substr(10, 2);
if(!Util.isValidDate("{0}/{1}/{2}".format(yearBirthday,monthBirthday,dayBirthday))){
return false;
}
if(!Util.isValidID(id)){
return false;
}
}
return true;
};
Util.isValidDate=function (date) {
date=date||new Date();
if(typeof date==="string"){
date=new Date(date);
}
date=date.getTime();
return date<new Date().getTime()&&date>new Date("1900/01/01").getTime()&&!isNaN(date);
};
Util.isValidID=function (id) {
var front17=id.split("");
front17.pop();
var factors=["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"];
var sum=0;
$.each(front17,function (index,value) {
sum+=value*factors[index];
});
return Boolean(["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"][sum%11]==id.charAt(id.length-1));
};