[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]更直接的测试代码就是:alert(test(“身份证号码”));经测试,上面的JS验证太强大了,输入正确的身份证后,随便改一位都报错!非常实用,以后大家就方便了解用户输入的身份证的正确与否了。
在IT行业中,身份证号码验证是常见的用户数据验证需求,特别是在涉及到个人信息处理的系统中。JavaScript作为客户端脚本语言,常用于此类实时验证。本话题主要介绍一个JavaScript身份证号码验证函数,该函数具备辨真伪的功能,并能兼容15位和18位的身份证号码。
身份证号码是由15位或18位数字组成,其中包含出生日期、地市级行政区域代码、顺序码和校验码。18位身份证号码的最后一位是校验码,通过特定算法计算得出,用于检验整个号码的正确性。而15位身份证号码在2004年后已停止发放,但旧的15位号码仍然有效,因此验证函数需要同时处理这两种情况。
以下是一个简单的JavaScript身份证号码验证函数示例:
```javascript
function test(idNumber) {
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (!reg.test(idNumber)) {
return "身份证号码格式错误";
}
// 检查15位身份证号码
if (idNumber.length === 15) {
var datePart = idNumber.substr(6, 6);
var now = new Date();
var birthDate = new Date("19" + datePart);
if (birthDate > now || birthDate.getFullYear() < 1900) {
return "出生日期不合法";
}
}
// 检查18位身份证号码的校验码
else if (idNumber.length === 18) {
var arrId = idNumber.split("");
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += (Math.pow(2, 17 - i) % 11) * parseInt(arrId[i], 11);
}
var checkCode = "10X98765432".charAt(sum % 11);
if (arrId[17].toUpperCase() != checkCode) {
return "身份证号码校验码错误";
}
}
return "身份证号码正确";
}
```
这个函数首先通过正则表达式检查输入的身份证号码是否符合15位或18位的基本格式。如果格式正确,它会根据身份证号码的长度进一步验证。对于15位身份证,它会检查出生日期是否合理,确保其不会超过当前日期且年份在1900年之后。对于18位身份证,函数会计算校验码并与输入的校验码进行对比,如果两者不匹配,则表明身份证号码错误。
在实际应用中,你可以将这个函数集成到你的网页中,通过JavaScript事件监听用户的输入,如`onblur`事件,当用户离开输入框时立即进行验证。例如,你可以这样调用该函数:
```html
<input type="text" id="idNumber" onblur="alert(test(this.value))">
```
这样的实时验证可以提供良好的用户体验,让用户在提交信息前就能知道身份证号码是否填写正确,避免了不必要的服务器请求和用户数据的错误录入。
JavaScript身份证号码验证函数在网页开发中起着关键作用,确保了用户输入的身份证信息准确无误,提高了系统的数据质量和安全性。通过学习和理解这种验证机制,开发者能够更好地处理与个人身份相关的敏感数据。
评论0