利用 JavaScript 解析身份证号提取性别与年龄的方法
通过 JavaScript 处理字符串,可以轻松地解析 18 位居民身份证号码。本文将演示如何提取出生日期以计算精确年龄,并根据特定规则判断用户性别。
实现结果预览
当输入正确的 18 位身份证号码并点击按钮后,系统会依次弹出提示框显示识别出的性别(男或女)以及周岁年龄。操作界面简洁,如下所示:

核心逻辑解析
中国大陆 18 位身份证号码的结构包含了许多关键信息,我们主要关注以下两点:
- 性别判断:身份证的第 17 位(即倒数第二位)表示性别。若该数字为奇数(1, 3, 5, 7, 9),则代表男性;若为偶数(0, 2, 4, 6, 8),则代表女性。
- 年龄计算:身份证的第 7 至 14 位代表出生年月日(YYYYMMDD)。我们需要获取当前年份、月份和日期,并结合出生日期进行跨年和跨月的边界判断,以确定周岁。
具体操作步骤
第 1 步:准备 HTML 交互界面
创建一个包含输入框和提交按钮的简单页面结构,用于接收用户的身份证号码输入。
- 新建一个
.html文件。 - 在
<body>中添加一个文本输入框<input type="text" id="txt">。 - 添加一个按钮
<input type="button" value="点击获取信息" id="bt">,绑定点击事件。
第 2 步:编写 JavaScript 处理逻辑
在 <script> 标签中定义核心函数 discriCard,用于解析传入的字符串。以下是完整代码实现:
<html>
<head>
<meta charset="utf-8">
<title>身份证解析示例</title>
<script type="text/javascript">
function discriCard(UUserCard) {
// 简单的格式化输出生日(仅演示字符串截取用法)
var birthStr = UUserCard.substring(6, 10) + "-" +
UUserCard.substring(10, 12) + "-" +
UUserCard.substring(12, 14);
// 1. 判断性别
// 提取第17位字符 (索引16)
var genderDigit = parseInt(UUserCard.substr(16, 1));
if (genderDigit % 2 == 1) {
alert("性别:男");
} else {
alert("性别:女");
}
// 2. 计算年龄
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1; // 月份从0开始,需+1
var day = now.getDate();
// 获取身份证中的出生年、月
var birthYear = parseInt(UUserCard.substring(6, 10));
var birthMonth = parseInt(UUserCard.substring(10, 12));
var birthDay = parseInt(UUserCard.substring(12, 14));
// 初步计算年龄差
var age = year - birthYear - 1;
// 如果今年已过生月生日,或者刚好是本月且已过生日,则年龄加1
if (month > birthMonth || (month == birthMonth && day >= birthDay)) {
age++;
}
alert("年龄:" + age);
}
// 页面加载完成后绑定事件
window.onload=function(){
var txt=document.getElementById("txt");
var bt=document.getElementById("bt");
bt.onclick=function(){
if(txt.value.length === 18){
discriCard(txt.value);
}else{
alert("请输入有效的18位身份证号码");
}
}
}
</script>
</head>
<body>
<p>请输入身份证号:<br/></p>
<input type="text" id="txt" />
<input type="button" value="点击获取信息" id="bt" />
</body>
</html>第 3 步:运行与测试
在浏览器中打开上述 HTML 文件。在输入框中输入任意有效的 18 位身份证号码(如:11010119900101123X),点击按钮即可看到识别结果。
注意:实际生产环境中建议加入更严格的正则校验以防止非法输入,并使用 DOM 元素显示结果而非阻塞式的 alert,以提升用户体验。

注意事项与优化
- 日期边界处理:上面的算法考虑了是否过生日的情况。如果当前月份小于出生月份,或者月份相同但天数小于出生天数,说明今年还没过生日,周岁需减一岁(初始值为 -1 的基础运算已包含此逻辑)。
- 合法性验证:仅依靠长度判断不够严谨,建议增加对前 17 位是否为数字、最后一位是否为 X 或数字的正则匹配。
以上就是基于 JavaScript 实现根据身份证号码识别性别和年龄的详细内容,更多关于 JavaScript 身份证处理的相关资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









