用于身份证信息的识别:省份、年龄、性别、出生日期。
analyzeIDCard(IDCard) {
const sexAndAge = {};
// 获取用户身份证号码
const userCard = IDCard;
// 如果身份证号码为undefind则返回空
if (!userCard) {
return sexAndAge;
}
const province = {
11: '北京市',
12: '天津市',
13: '河北省',
14: '山西省',
15: '内蒙古自治区',
21: '辽宁省',
22: '吉林省',
23: '黑龙江省',
31: '上海省',
32: '江苏省',
33: '浙江省',
34: '安徽省',
35: '福建省',
36: '江西省',
37: '山东省',
41: '河南省',
42: '湖北省',
43: '湖南省',
44: '广东省',
45: '广西壮族自治区',
46: '海南省',
50: '重庆省',
51: '四川省',
52: '贵州省',
53: '云南省',
54: '西藏自治区',
61: '陕西省',
62: '甘肃省',
63: '青海省',
64: '宁夏回族自治区',
65: '新疆维吾尔自治区',
71: '台湾省',
81: '香港特别行政区',
82: '澳门特别行政区',
};
// 获取省份
sexAndAge.province = province[parseInt(userCard.substr(0, 2))]
// 获取性别
if (parseInt(userCard.substr(16, 1), 10) % 2 === 1) {
sexAndAge.sex = '男';
} else {
sexAndAge.sex = '女';
}
// 获取出生年月日
sexAndAge.birthday = userCard.substring(6, 10) + "-" + userCard.substring(10, 12) + "-" + userCard.substring(12, 14)
const yearBirth = userCard.substring(6, 10);
const monthBirth = userCard.substring(10, 12);
const dayBirth = userCard.substring(12, 14);
// 获取当前年月日并计算年龄
const myDate = new Date();
const monthNow = myDate.getMonth() + 1;
const dayNow = myDate.getDay();
let age = myDate.getFullYear() - yearBirth;
if (monthNow < monthBirth || (monthNow === monthBirth && dayNow < dayBirth)) {
age -= 1;
}
// 得到年龄
sexAndAge.age = age;
// 返回
return sexAndAge;
},