该函数可以判断身份证生意是否合法,简单判断是否符合身份证规则,没有验证区县等等,借鉴了网络上的一些写法。。
function idCard(UUserCard, num) {
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
if (num == 1) {
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(UUserCard) === false) {
return false;
} else {
return true;
}
}
if (num == 2) {
var result = true;
if (15 == UUserCard.length) {
var year = UUserCard.substring(6, 8);
var month = UUserCard.substring(8, 10);
var day = UUserCard.substring(10, 12);
var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
result = false;
}
} else if (18 == UUserCard.length) {
var year = UUserCard.substring(6, 10);
var month = UUserCard.substring(10, 12);
var day = UUserCard.substring(12, 14);
var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
// 这里用getFullYear()获取年份,避免千年虫问题
if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
result = false;
}
} else {
result = false;
}
return result;
}
if (num == 3) {
//获取出生日期
if (UUserCard.length == 15) {
var birth = '19' + UUserCard.substring(6, 8) + "-" + UUserCard.substring(8, 10) + "-" + UUserCard.substring(10, 12);
} else if (UUserCard.length == 18) {
var birth = UUserCard.substring(6, 10) + "-" + UUserCard.substring(10, 12) + "-" + UUserCard.substring(12, 14);
}
return birth;
}
}