最近在写表单验证时用到身份证号码,并根据身份证自动计算年龄、性别、出生日期等,特此记录一下。

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++;
  }

}