最近项目中碰到一个需求,根据用户输入的身份证号码自动识别生日,和性别,为此专门在网上找了下资料了解了下,建议先了读一遍下边的文章
身份证信息介绍: https://baijiahao.baidu.com/s?id=1611137815296898286&wfr=spider&for=pc
后来自己写了个方法记录一下
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" class="card" style="width: 300px;height: 30px;font-size: 14px;">
<button class="btn">验证</button>
<script>
var reg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/;
var btn = document.querySelector('.btn');
var cardnumber, birthday, sex;
btn.onclick = function () {
cardnumber = document.querySelector('.card').value;
if (reg.test(cardnumber)) {
transformIdentityCard(cardnumber)
console.log(birthday)
console.log(sex)
} else {
console.log('请输入正确身份证号')
}
}
function transformIdentityCard (value) {
// sex 0未知 1男 2女
if (value.length === 15) {
birthday = `19${value.substr(6, 2)}-${value.substr(8, 2)}-${value.substr(10, 2)}`
sex = (value.substr(14, 1) % 2) || 2
}
if (value.length === 18) {
birthday = `${value.substr(6, 4)}-${value.substr(10, 2)}-${value.substr(12, 2)}`
sex = (value.substr(16, 1) % 2) || 2
}
}
</script>
</body>
</html>
运行结果如下