要实现根据身份证号获取生日、年龄、性别等信息,需要以下步骤:
第一步:验证身份证号是否合法
身份证号码是由18位字符组成,前17位为数字,最后一位可能是数字或字母X(表示未知或者无法识别)。而且,身份证号还有严格的校验规则,需要满足一定的算法才能被认为是合法的。
我们可以通过正则表达式来验证身份证号是否符合规范,具体的正则表达式可以参考以下代码:
function isIdCardNo(num) {
//身份证号正则表达式
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(num)) {
return true;
} else {
return false;
}
}
第二步:解析身份证号码,获取出生日期、性别信息
如果身份证号码通过了验证,那么接下来需要解析它,从中提取出生日期和性别信息。身份证号码的前6位表示省份和城市代码,7到14位表示出生日期,15到17位表示性别和顺序码,最后一位是校验码。
以下是通过jQuery实现根据身份证号获取出生日期和性别信息的代码:
$('#idcard').blur(function() {
var idCardNo = $(this).val(); //获取输入框中的身份证号码
if (isIdCardNo(idCardNo)) {
//解析出生日期和性别信息
var birthdate = idCardNo.substring(6, 10) + '-' + idCardNo.substring(10, 12) + '-' + idCardNo.substring(12, 14);
var gender = idCardNo.substring(16, 17) % 2 == 0 ? '女' : '男';
//将出生日期和性别信息显示在页面上
$('#birthdate').val(birthdate);
$('#gender').val(gender);
}
else {
alert('请输入正确的身份证号码!');
}
})
这段代码中,我们使用jQuery的blur()
方法来监听输入框的失去焦点事件,当用户输入完毕身份证号码并离开输入框时,立即执行前面定义的isIdCardNo()
方法进行身份证号验证。如果验证通过,就可以通过substring()
方法从身份证号中提取出生日期和性别信息,然后将它们显示在页面上。
第三步:计算年龄
最后一步是计算年龄。简单起见,我们可以假设当前日期为2019年7月1日。根据出生日期和当前日期之间的差值,就可以计算出年龄。
以下是通过jQuery实现根据身份证号获取生日、年龄、性别等信息的完整代码:
function isIdCardNo(num) {
//身份证号正则表达式
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(num)) {
return true;
} else {
return false;
}
}
$('#idcard').blur(function() {
var idCardNo = $(this).val(); //获取输入框中的身份证号码
if (isIdCardNo(idCardNo)) {
//解析出生日期和性别信息
var birthdate = idCardNo.substring(6, 10) + '-' + idCardNo.substring(10, 12) + '-' + idCardNo.substring(12, 14);
var gender = idCardNo.substring(16, 17) % 2 == 0 ? '女' : '男';
//计算年龄
var startdate = new Date(birthdate.replace(/-/g, '/')); //将出生日期转为日期类型
var enddate = new Date('2019/7/1'); //假设当前日期为2019年7月1日
var age = enddate.getFullYear() - startdate.getFullYear(); //计算出年龄
if (enddate.getMonth() < startdate.getMonth() || (enddate.getMonth() == startdate.getMonth() && enddate.getDate() < startdate.getDate())) {
age--; //还未到生日,年龄减1
}
//将出生日期、年龄和性别信息显示在页面上
$('#birthdate').val(birthdate);
$('#age').val(age);
$('#gender').val(gender);
}
else {
alert('请输入正确的身份证号码!');
}
})
代码中通过定义startdate
、enddate
、age
变量,通过getFullYear()
、getMonth()
、getDate()
方法分别取出年份、月份、日期,计算出年龄,最终将出生日期、年龄和性别信息显示在页面上。
以下是另一个实例,用于解析身份证号中的籍贯省份、城市信息:
function getProvinceCity(idCardNo) {
if (isIdCardNo(idCardNo)) {
//解析出籍贯省份、城市信息
var code = idCardNo.substring(0, 6);
var province = area[code.substring(0, 2) + '0000'];
var city = area[code.substring(0, 4) + '00'] || '';
return province + ' ' + city;
}
else {
alert('请输入正确的身份证号码!');
}
}
//省份、城市代码及名称
var area = {
'110000': '北京市', '120000': '天津市', '130000': '河北省', '140000': '山西省', '150000': '内蒙古自治区',
'210000': '辽宁省', '220000': '吉林省', '230000': '黑龙江省', '310000': '上海市', '320000': '江苏省',
'330000': '浙江省', '340000': '安徽省', '350000': '福建省', '360000': '江西省', '370000': '山东省',
'410000': '河南省', '420000': '湖北省', '430000': '湖南省', '440000': '广东省', '450000': '广西壮族自治区',
'460000': '海南省', '500000': '重庆市', '510000': '四川省', '520000': '贵州省', '530000': '云南省',
'540000': '西藏自治区', '610000': '陕西省', '620000': '甘肃省', '630000': '青海省', '640000': '宁夏回族自治区', '650000': '新疆维吾尔自治区'
};
代码中定义了一个area
变量,表示省份、城市代码及名称的映射关系。用身份证号码前6位提取出地区代码,根据该代码获取对应的省份、城市名称并返回结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现根据身份证号获取生日、年龄、性别等信息的方法 - Python技术站