javascript验证香港身份证的格式或真实性

发布时间 - 2026-01-10 22:54:18    点击率:

话不多说,请看代码

function IsHKID(str) {
 var strValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 // basic check length
 if (str.length < 8)
 return false;
 // handling bracket
 if (str.charAt(str.length-3) == '(' && str.charAt(str.length-1) == ')')
 str = str.substring(0, str.length - 3) + str.charAt(str.length -2);
 // convert to upper case
 str = str.toUpperCase();
 // regular expression to check pattern and split
 var hkidPat = /^([A-Z]{1,2})([0-9]{6})([A0-9])$/;
 var matchArray = str.match(hkidPat);
 // not match, return false
 if (matchArray == null)
 return false;
 // the character part, numeric part and check digit part
 var charPart = matchArray[1];
 var numPart = matchArray[2];
 var checkDigit = matchArray[3];
 // calculate the checksum for character part
 var checkSum = 0;
 if (charPart.length == 2) {
 checkSum += 9 * (10 + strValidChars.indexOf(charPart.charAt(0)));
 checkSum += 8 * (10 + strValidChars.indexOf(charPart.charAt(1)));
 } else {
 checkSum += 9 * 36;
 checkSum += 8 * (10 + strValidChars.indexOf(charPart));
 }
 // calculate the checksum for numeric part
 for (var i = 0, j = 7; i < numPart.length; i++, j--)
 checkSum += j * numPart.charAt(i);
 // verify the check digit
 var remaining = checkSum % 11;
 var verify = remaining == 0 ? 0 : 11 - remaining;
 return verify == checkDigit || (verify == 10 && checkDigit == 'A');
}

在网上找了很久都没合意的验证方式,最后通过Google找到一个国外写的js验证,发现可以使用。

上面那段验证的很精密,包含身份证真实性的校验,如果只是想验证输入的香港身份证格式,请使用下面的这段js。

function IsHKID(str) {
 var strValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 // basic check length
 if (str.length < 8)
 return false;
 // handling bracket
 if (str.charAt(str.length-3) == '(' && str.charAt(str.length-1) == ')')
 str = str.substring(0, str.length - 3) + str.charAt(str.length -2);
 // convert to upper case
 str = str.toUpperCase();
 // regular expression to check pattern and split
 var hkidPat = /^([A-Z]{1,2})([0-9]{6})([A0-9])$/;
 var matchArray = str.match(hkidPat);
 // not match, return false
 if (matchArray == null)
 return false;
 return true;
 }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# javascript身份证验证  # 香港身份证验证  # Javascript使用正则验证身份证号(简单)  # js验证真实姓名与身份证号  # 手机号的简单实例  # js验证真实姓名与身份证号是否匹配  # JavaScript正则表达式验证身份证号码是否合法(两种方法)  # 如何用javascript正则表达式验证身份证号码是否合法  # javascript验证身份证号  # js实现二代身份证号码验证详解  # js 验证身份证信息有效性  # js实现身份证号码验证的简单实例  # js 第二代身份证号码的验证机制代码  # 都没  # 很久  # 这段  # 请使用  # 找了  # 可以使用  # 香港  # 那段  # 多说  # 在网上  # 国外  # false  # handling  # bracket  # length  # lt  # return  # charAt  # upper  # case 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何将凡科建站内容保存为本地文件?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何构建满足综合性能需求的优质建站方案?  Python文件操作最佳实践_稳定性说明【指导】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何安全更换建站之星模板并保留数据?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何快速使用云服务器搭建个人网站?  EditPlus中的正则表达式 实战(1)  如何快速查询网址的建站时间与历史轨迹?  android nfc常用标签读取总结  详解Android中Activity的四大启动模式实验简述  Bootstrap CSS布局之列表  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何利用DOS批处理实现定时关机操作详解  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  如何快速搭建高效简练网站?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  详解vue.js组件化开发实践  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  高端智能建站公司优选:品牌定制与SEO优化一站式服务  北京专业网站制作设计师招聘,北京白云观官方网站?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何在香港免费服务器上快速搭建网站?  详解Huffman编码算法之Java实现  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  如何快速搭建高效WAP手机网站?  JavaScript中的标签模板是什么_它如何扩展字符串功能  html5的keygen标签为什么废弃_替代方案说明【解答】  如何快速生成专业多端适配建站电话?  香港服务器部署网站为何提示未备案?  如何快速搭建虚拟主机网站?新手必看指南  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  七夕网站制作视频,七夕大促活动怎么报名?  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Swift开发中switch语句值绑定模式  Laravel如何使用模型观察者?(Observer代码示例)  如何快速搭建高效服务器建站系统?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何解决hover在ie6中的兼容性问题  Python结构化数据采集_字段抽取解析【教程】