首页 > 编程学习 > JavaScript - 通过居民身份证号码获取年龄和性别(函数封装)

前言

身份证号并非 “无规则” 数字,每一段都代表着持证公民的一些信息。

当程序拿到用户身份证号后,可 “帮助” 用户算出年龄、性别、出生日期、地区等信息,

计算规则

现在大部分都是二代身份证(依文章发布日期),如果程序严谨的话,通过位数做一二代身份证判断分支,最后分别进行处理。

身份证位数出生年份出生月份出生日期性别
15位(一代)7、8位9、10位11、12位15位 奇男偶女
18位(二代)7、8、9、10位11、12位13、14位17位 奇男偶女

函数封装

直接全部复制即可,Vue 项目的话,做一下函数写法改造即可。

为此封装了一个函数(方便调用),做了身份证号是否合法验证,如下代码所示:

/*** 通过身份证号获取年龄、性别* @description 验证参数合法性,获取信息并返回* @param {String} icard - 二代居民身份证号码* @return Object*/
function getIcard(icard) {// 验证是否纯数字(直接退出函数并返回false)if(!(/^\d+$/.test(icard))){ return false }// 验证是否二代居民身份证(直接退出函数并返回false)if(icard.length != 18) { return false }// 要返回的最终信息(如果都为null则未获取到)const result = {gender: null,//性别age: null//年龄}// 收集必要信息icard.substring(6,10) + "-" + icard.substring(10,12) + "-" +icard.substring(12,14);// 获取性别if(parseInt(icard.substr(16,1)) %2 == 1) {// 男性result.gender = '男'} else {// 女性result.gender = '女'}// 获取年龄var myDate = new Date()var month = myDate.getMonth() + 1var day = myDate.getDate()var age = myDate.getFullYear() - icard.substring(6, 10) - 1if(icard.substring(10,12) < month || icard.substring(10,12) == month && icard.substring(12,14) <= day){ age ++; }//年龄result.age = age// returnreturn result;
},

使用方法

注意:触发方式自选,如果是 <input> 输入框建议 @blur 焦点离开时触发。

// 取到的年龄和性别
const data = this.getIcard('130355199811093358')// 如果data为false,则证明身份证不合法
if(data){console.log(data)//{gender: '女', age: 22}
}

写在后面

如果本篇获取的信息不满足于您的项目(比如还需要获取生日),

您可以根据 “计算规则” 自己手动增加代码。


本文链接:https://www.ngui.cc/51cto/show-92.html
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000