利用 JavaScript 解析身份证号提取性别与年龄的方法

Dylan
Dylan
发布时间:2026-10-13 | 2人浏览过
原创

通过 JavaScript 处理字符串,可以轻松地解析 18 位居民身份证号码。本文将演示如何提取出生日期以计算精确年龄,并根据特定规则判断用户性别。

实现结果预览

当输入正确的 18 位身份证号码并点击按钮后,系统会依次弹出提示框显示识别出的性别(男或女)以及周岁年龄。操作界面简洁,如下所示:

核心逻辑解析

中国大陆 18 位身份证号码的结构包含了许多关键信息,我们主要关注以下两点:

  • 性别判断:身份证的第 17 位(即倒数第二位)表示性别。若该数字为奇数(1, 3, 5, 7, 9),则代表男性;若为偶数(0, 2, 4, 6, 8),则代表女性。
  • 年龄计算:身份证的第 7 至 14 位代表出生年月日(YYYYMMDD)。我们需要获取当前年份、月份和日期,并结合出生日期进行跨年和跨月的边界判断,以确定周岁。

具体操作步骤

第 1 步:准备 HTML 交互界面

创建一个包含输入框和提交按钮的简单页面结构,用于接收用户的身份证号码输入。

  1. 新建一个 .html 文件。
  2. 在 <body> 中添加一个文本输入框 <input type="text" id="txt">。
  3. 添加一个按钮 <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 身份证处理的相关资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表