JavaScript实战 - 验证身份证号码格式的合法性

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言:

身份证号码是每个国家用于唯一标识公民身份的重要证件。在中国,居民身份证号码是一个特定格式的字符串,且其格式和校验位计算规则十分严格。本文将介绍如何使用HTML和JavaScript来验证中国居民身份证号码的合法性。

身份证号码格式及校验规则

  1. 格式要求:

    • 身份证号码是一个18位的字符串,其中前17位是数字,最后一位可能是数字或字母X(代表10)。
  2. 校验位计算:

    • 身份证号码的最后一位是校验位,根据前17位数字通过一定的计算得出,用于检验身份证号码的有效性。

HTML和JavaScript实现

以下是一个简单的HTML页面,结合JavaScript函数,用于验证中国居民身份证号码的合法性:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>验证身份证号码格式的合法性</title>
<style>
    body {
        font-family: Arial, sans-serif;
        padding: 20px;
    }
    label {
        font-weight: bold;
    }
</style>
</head>
<body>
    <h2>验证身份证号码格式的合法性</h2>
    <form id="idCardForm">
        <label for="idCardNumber">请输入身份证号码:</label>
        <input type="text" id="idCardNumber" name="idCardNumber" required>
        <button type="submit">验证</button>
    </form>
    <div id="result"></div>

    <script>
        function validateChineseIDCard(idCard) {
            // 正则表达式验证格式
            const pattern = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;

            if (!pattern.test(idCard)) {
                return false;
            }

            // 验证校验位
            const modWeight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 权重
            const modCheckDigit = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; // 校验位映射

            const idArray = idCard.split('');
            let sum = 0;
            for (let i = 0; i < 17; i++) {
                sum += parseInt(idArray[i]) * modWeight[i];
            }

            const mod = sum % 11;
            const checkDigit = modCheckDigit[mod];

            return idArray[17] === checkDigit.toString();
        }

        const form = document.getElementById('idCardForm');
        const resultDiv = document.getElementById('result');

        form.addEventListener('submit', function(event) {
            event.preventDefault();
            const idCardNumber = document.getElementById('idCardNumber').value.trim();

            if (validateChineseIDCard(idCardNumber)) {
                resultDiv.textContent = `身份证号码 ${idCardNumber} 是有效的。`;
                resultDiv.style.color = 'green';
            } else {
                resultDiv.textContent = `身份证号码 ${idCardNumber} 是无效的,请输入正确的身份证号码。`;
                resultDiv.style.color = 'red';
            }
        });
    </script>
</body>
</html>

技术解析

  • HTML部分:

    • 提供了一个简单的表单,用户可以输入要验证的身份证号码,并通过按钮触发验证操作。
  • JavaScript部分:

    • validateChineseIDCard 函数用于验证身份证号码的格式和校验位的合法性。它使用了正则表达式来验证号码的基本格式,然后计算校验位以确认号码的有效性。

    • 通过 addEventListener 方法,表单提交时触发验证操作,根据验证结果更新页面显示内容。

结论

通过本文的实现,我们展示了如何使用HTML和JavaScript来验证中国居民身份证号码的合法性。这种验证方法可以轻松地集成到Web应用程序中,确保用户输入的身份证号码符合规定的格式和校验规则,从而提升数据的准确性和安全性。

希望本文能够帮助开发者理解和实现身份证号码验证功能,并在实际项目中应用这些技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥Sean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值