function isIdCardNo(num) {

num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。

if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {

//alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');

//alert('身份证号长度不正确或不符合规定!');

return false;

}

//验证前2位,城市符合

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};

if(aCity[parseInt(num.substr(0,2))]==null){

//alert('身份证号不正确或不符合规定!');

return false;

}

//alert('城市:'+aCity[parseInt(num.substr(0,2))]);

//下面分别分析出生日期和校验位

var len, re; len = num.length;

if (len == 15) {

re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);

var arrSplit = num.match(re); //检查生日日期是否正确

var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);

var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));

if (!bGoodDay) {

//alert('身份证号的出生日期不对!');

return false;

} else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。

var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

var nTemp = 0, i;

num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);

for(i = 0; i < 17; i ++) {

nTemp += num.substr(i, 1) * arrInt[i];

}

num += arrCh[nTemp % 11];

return true;

}

}

if (len == 18) {

re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);

var arrSplit = num.match(re); //检查生日日期是否正确

var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);

var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));

if (!bGoodDay) {

//alert(dtmBirth.getYear());

//alert(arrSplit[2]);

//alert('身份证号的出生日期不对!');

return false;

}

else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。

var valnum;

var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

var nTemp = 0, i;

for(i = 0; i < 17; i ++) {

nTemp += num.substr(i, 1) * arrInt[i];

}

valnum = arrCh[nTemp % 11];

if (valnum != num.substr(17, 1)) {

//alert('18位身份证的校验码不正确!应该为:' + valnum);

//alert('18位身份证号的校验码不正确!');

return false;

}

return true;

}

}

return false;

};

js如何实现扫描身份证识别_JavaScript实现身份证验证代码实例相关推荐

  1. python身份证识别仪_C#身份证识别相关技术功能详解

    最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍一种身份证识别的方法. 环境搭建 在File类别下下载这个EXE,进行安装, ...

  2. js如何实现扫描身份证识别_javascript实现根据身份证号读取相关信息

    公民身份号码由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码组成. 地址码 前两位表示省,中间两位表示市,后两位表示县 顺序码 表示同一地址码所标识的区域范围内,对同年.月.日出生 ...

  3. 百度云身份证识别以及获取身份证信息

    因为需用到百度API 所以我们需要在百度里面进去注册 飞机票 百度ai https://ai.baidu.com/tech/ocr_cards 先创建应用,按步骤填写资料 创建公共后,如下,记住API ...

  4. php结合阿里云(印刷文字识别-身份证识别)进行身份证真实性验证------识别图片中的信息进行验证

    1.购买阿里云的套餐: 2.查看一下你的AppCode: 3.代码部分: /*** 图片转码*/public function img_base64($path){//对path进行判断,如果是本地文 ...

  5. 身份证识别促进互联网实名制

    网上购物.移动办公.智慧城市等等,渗透进我们的日常生活工作中, 下面列举两个身份证识别的具体使用场景.例如现注册各APP需要实名验证,开发公司就可以在APP里集成身份证识别 SDK.APP集成了身份证 ...

  6. 身份证识别在移动端和服务器端的应用与特点

    身份证识别可以集成在APP中,也可以集成在服务器中,利用移动端摄像头拍摄或扫描证件并识别信息.完成信息录入. 而在服务器端身份证识别主要是两方面的应用:私有云端的身份证识别与公有云端的身份证识别. 一 ...

  7. 安卓端身份证识别与云端服务器识别

    安卓端的身份证识别已经不能满足实际的需求,和云端服务器挂接的方法应运而生,以往广泛应用方式为pc端的二代证读卡机具,但是单纯的二代证读卡方式已经不能应用到移动端的设备上,即使使用起来比较笨重,不像电话 ...

  8. 身份证识别和聚合收单

    一,身份认识别(这里的操作是后端进行操作的) 1.需要一个身份证读卡机器,安装相应sdk 身份证识别和聚会收单安装包我放在文章最后,需要自己提取 2,写代码实现该功能: 引入jar包 <depe ...

  9. 达摩院视觉AI课-身份证识别

    功能描述 身份证识别可以识别二代身份证关键字段内容,关键字段包括:姓名.性别.民族.身份证号.出生日期.地址信息.有效起始时间.签发机关,同时可输出身份证区域位置和人脸位置信息. 应用场景 远程注册: ...

最新文章

  1. 利用Eventlog Analyzer分析日志
  2. apt-get update 出现E: Could not get lock /var/lib/apt/lists/lock问题的解决
  3. 如何获取Google地图API密钥?(翻译版)
  4. 设计模式之单件模式(Singleton Pattern)
  5. 物联网现状及落地难点
  6. mysql写入 cpu飙升_分析MySQL中索引引引发的CPU负载飙升的问题
  7. 关于马克飞象中的Latex语法与CSDN中的区别
  8. Java连Mysql数据库
  9. 自己动手写CPU(6)简单算术操作指令
  10. 【弄nèng - SearchGuard】应用篇 —— Windows下elasticsearch5.2.2 安装SearchGuard5.2.2
  11. 因果系列文章(1):因果推断及相关论文
  12. 如何关闭windows杀毒软件
  13. PAT乙级【1051~1095】
  14. 教您如何使用WebMatrix创建第一个网页
  15. 文本检测 OpenCV EAST 文本检测器 源代码
  16. 全速前进! AI助力工业制造智能升级
  17. unity汽车引擎音效变调实现
  18. 纯JAVA实现微信跳一跳刷分
  19. matlab lyapunov指数,lyapunov指数matlab
  20. 创业-创新构思:一款关于盖楼房的益智游戏

热门文章

  1. java的map线程安全吗_Java中Map线程安全实现
  2. linux带行号显示数据,linux中查看文件时显示行号
  3. 关于月底的MWC上海展之旅,亚信科技要先剧透一丢丢!
  4. 【MAC 安装MySql】
  5. 【已解决】可以登录微信,但是没办法上网
  6. 【BootStrap】--折叠插件
  7. 业务与信息系统深度融合,改变业务运营和创新模式:阿里巴巴企业级互联网架构(Aliware)实践...
  8. 4点小诀窍,帮助你设计企业在线学习课程,让学员轻松记忆
  9. 【UI设计No6】名片设计
  10. tcpdump抓包详解