最近项目中碰到一个需求,根据用户输入的身份证号码自动识别生日,和性别,为此专门在网上找了下资料了解了下,建议先了读一遍下边的文章
身份证信息介绍: /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>
运行结果如下