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 相关文章推荐
Extjs学习笔记之七 布局
Jan 08 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
CodeMirror js代码加亮使用总结
Mar 25 Javascript
详解webpack 多入口配置
Jun 16 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
微信小程序实现简易table表格
Jun 19 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
vue-cli3+typescript初体验小结
Feb 28 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
Jun 25 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 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
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
destoon之一键登录设置
2014/06/21 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
Python random模块用法解析及简单示例
2017/12/18 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
python实现共轭梯度法
2019/07/03 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
运动会广播稿60字
2014/01/15 职场文书
电影复兴之路观后感
2015/06/02 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
2016年十一促销广告语
2016/01/28 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
2022微信温控新功能上线
2022/05/09 数码科技