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中获取id值方法小结
Sep 22 Javascript
EasyUi datagrid 实现表格分页
Feb 10 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
js漂浮广告实现代码
Aug 15 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
Jul 05 Javascript
微信小程序滑动选择器的实现代码
Aug 10 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
JavaScript的变量声明与声明提前用法实例分析
Nov 26 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 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新手上路(二)
2006/10/09 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
菜单效果
2006/10/14 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
Python实现替换文件中指定内容的方法
2018/03/19 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python障碍式期权定价公式
2019/07/19 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
如何对python的字典进行排序
2020/06/19 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
如何删除一个表里面的重复行
2013/07/13 面试题
怎样写留学自荐信
2013/11/11 职场文书
迟到检讨书5000字
2014/01/31 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
作弊检讨书范文
2015/05/06 职场文书
预备党员半年考察意见
2015/06/01 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers