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


Posted in Javascript onFebruary 07, 2017

话不多说,请看代码

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 相关文章推荐
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
vue2.0全局组件之pdf详解
Jun 26 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
用javascript制作qq注册动态页面
Apr 14 Javascript
JS实现JSON.stringify的实例代码讲解
Feb 07 #Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 #Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 #Javascript
纯js三维数组实现三级联动效果
Feb 07 #Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 #Javascript
bootstrap vue.js实现tab效果
Feb 07 #Javascript
Node连接mysql数据库方法介绍
Feb 07 #Javascript
You might like
E路文章系统PHP
2006/12/11 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
浅析php工厂模式
2014/11/25 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
基于python实现简单日历
2018/07/28 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python numpy数组复制使用实例解析
2020/01/10 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python定时截屏实现
2020/11/02 Python
Linux中如何用命令创建目录
2015/01/12 面试题
助残日活动总结
2014/08/27 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
摩登时代观后感
2015/06/03 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
五年级作文之想象作文
2019/10/30 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python