最近在写表单验证时用到身份证号码,并根据身份证自动计算年龄、性别、出生日期等,特此记录一下。
1、身份证号码校验:正则表达式
var idCard = $("#idCard ").val().trim();
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; //或者/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i
if (!reg.test(idCard)) {
layer.msg('身份证输入不合法');
console.log('身份证输入不合法',idCard);
return false;
} else{
console.log('身份证输入合法,idCard);
}
2、计算年龄、性别、出生日期
//判断身份证号码长度,这里用18位
if (idCard.length == 18) {
//计算出生日期
var birthday = "";
birthday = idCard.substr(6, 8);
birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-"); //输出格式为1999-10-10
//计算性别
var sex = "";
if (parseInt(idCard.substr(16, 1)) % 2 == 1) {
sex = "男";
} else {
sex = "女";
}
//计算年龄
var myDate = new Date();
var month = myDate.getMonth() + 1;
var day = myDate.getDate();
var age = myDate.getFullYear() - idCard.substring(6, 10) - 1;
if (idCard.substring(10, 12) < month || (idCard.substring(10, 12) == month && idCard.substring(12, 14) <= day)) {
age++;
}
}