本文主要讲解了如何使用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