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 相关文章推荐
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
关于全局变量和局部变量的那些事
Jan 11 Javascript
js数组的操作详解
Mar 27 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
jquery获得同源iframe内body下标签的值的方法
Sep 25 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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
php简单生成随机数的方法
2015/07/30 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
js函数调用常用方法详解
2012/12/03 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
angularjs中的$eval方法详解
2017/04/24 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
商务英语应届生自我鉴定
2013/12/08 职场文书
招聘单位介绍信
2014/01/14 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
无罪辩护词范文
2015/05/21 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript