/校验身份证号码
function checkIdCardNo(checkObj) {
var idCardNo = checkObj.value;
return verifyIdCardNo(idCardNo);
}
校验身份证号码
function verifyIdCardNo(idCardNo){
if(idCardNo){
var idNo = trim(idCardNo);
if (idNo.length == 15 && if15IdCardNo(idNo)) {
return true;
} else if (idNo.length == 18 && if18IdCardNo(idNo)) {
return true;
}
}
return false;
}
// 15位身份证,只有数字
function if15IdCardNo(idCardNo) {
var reg15 = /^\d{15}$/;
if (reg15.test(idCardNo)) {
return true;
}
return false;
}
//18位身份证,前17位仅允许上传数字,第18位检验位允许数字或“X”(大写)
function if18IdCardNo(idCardNo) {
var reg18 = /^\d{17}[0-9X]$/;
if (reg18.test(idCardNo) && idCardNo.substr(17, 1) == calculate18thInIdCardNo(idCardNo)) {
return true;
}
return false;
}
// 计算18位身份证第18位的校验码
function calculate18thInIdCardNo(idCardNo) {
// 权
var WI = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
// 校验码
var JYM = [ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' ];
var S = 0;
for (var i = 0; i < 17; i++) {
S += WI[i] * idCardNo.substr(i, 1);
}
var Y = S % 11
return JYM[Y];
}