关键词

javascript 出生日期和身份证判断大全

Javascript 出生日期和身份证判断大全

简介

本文主要讲解了如何使用Javascript判断身份证号和出生日期是否符合标准。

身份证号判断

校验规则

中国大陆的身份证号码是由18位数字组成的。最后一位为校验位,前17位为身份证号码的主体部分。其中,第1-2位为行政区划代码,第3-6位为出生年份(用4位数字表示),第7-10位为出生月份和日期(用2位数字分别表示),第11-17位为顺序编码,其中第17位为性别判断位,奇数表示男性,偶数表示女性。更具体的校验规则可以参见身份证号校验规则

实现代码

下面的Javascript代码实现了对身份证号码的校验,其中idcard是待校验的身份证号码。

function checkIdcard(idcard) {
  var isCorrect = false;
  if (idcard.length == 18) {
    var addrCode = idcard.substring(0, 6);
    var birthCode = idcard.substring(6, 14);
    var isMale = idcard.substring(16, 17) % 2;
    var weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    var sum = 0;
    for (var i = 0; i < 17; i++) {
      sum += parseInt(idcard.charAt(i)) * weights[i];
    }
    var mod = sum % 11;
    if (idcard.charAt(17) == checkCodes[mod]) {
      isCorrect = true;
    }
  }
  return isCorrect;
}

示例说明

以下示例展示了如何使用上述函数判断身份证号码是否合法:

var idcard = '31010819900101000X';
if (checkIdcard(idcard)) {
  console.log('身份证号码' + idcard + '合法');
} else {
  console.log('身份证号码' + idcard + '不合法');
}

出生日期判断

校验规则

中国大陆的出生日期通常是由4位数字表示年份、2位数字表示月份、2位数字表示日期组成的。更具体的校验规则可以参见出生日期校验规则

实现代码

下面的Javascript代码实现了对出生日期的校验,其中birthdate是待校验的出生日期,格式为YYYY-MM-DD。如果传入的出生日期不是指定的格式,则返回false

function checkBirthdate(birthdate) {
  birthdate = birthdate.trim();
  var regex = /^\d{4}-\d{2}-\d{2}$/;
  if (!regex.test(birthdate)) {
    return false;
  }
  var dateArr = birthdate.split('-');
  var year = parseInt(dateArr[0]);
  var month = parseInt(dateArr[1]);
  var day = parseInt(dateArr[2]);
  var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
    monthDays[1] = 29;
  }
  if (month < 1 || month > 12) {
    return false;
  }
  if (day < 1 || day > monthDays[month - 1]) {
    return false;
  }
  return true;
}

示例说明

以下示例展示了如何使用上述函数判断出生日期是否合法:

var birthdate = '1990-01-01';
if (checkBirthdate(birthdate)) {
  console.log('出生日期' + birthdate + '合法');
} else {
  console.log('出生日期' + birthdate + '不合法');
}

本文链接:http://task.lmcjl.com/news/15811.html

展开阅读全文