微信小程序身份证验证方法实现详解


Posted in Javascript onJune 28, 2019

身份证验证在很多小程序中已经成为必不可少的一部分,它能有效的判断出身份证是否存在,是否输入错误,以防不良人士恶意攻击。

判断一个身份证是否合法的身份证号码有以下几个步骤需要验证

①:身份证18位数

②:前17位全是数字

③:验证最后一位

1.前面的身份证号码17位数分别乘以不同的系数    从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

2.将这17位数字和系数相乘的结果相加。 

3.用加出来和模以11,看余数是多少?

4.余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。

5.通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。

6. 如果对应的数字是10,身份证的最后一位号码就是罗马数字x。

wxml

<view class='box'> 
<view class='box-shang'>  
<view class='box-shang_left'>   
<text class='text1'>姓名:</text>  
</view>  
<view class='box-shang_right'>   
<input placeholder='请输入姓名' id='name' bindinput='bininput_name' auto-focus></input>  
</view> 
</view> 
<view class='box-shang'>  
<view class='box-shang_left'>   
<text>身份证:</text>  
</view>  
<view class='box-shang_right'>  
<input placeholder='请输入身份证' id='identity' bindinput='bininput_identity' auto-focus></input>  
</view> </view> <view class='box-shang'>  
<view class='box-shang_left'>   
<text>手机号:</text>  </view>  <view class='box-shang_right'>   
<input placeholder='请输入手机号' id='mobile' bindinput='bininput_mobile' auto-focus></input>  
</view> </view> <view>  
<text class='text2'>和你的关系</text> 
</view>
</view>

js

//绑定输入的姓名 
bininput_name: function (e) {  this.setData({   name: e.detail.value  }) }, 
//绑定输入的身份证 
bininput_identity: function (e) {  this.setData({   identity: e.detail.value  }) }, 
//绑定输入的电话 
bininput_mobile: function (e) {  this.setData({   mobile: e.detail.value  }) },

js身份证验证方法

/*身份证验证输入是否正确 
 *身份证号合法性验证 
*支持15位和18位身份证号 *支持地址编码、出生日期、校验位验证*/ 
getBirthAndSex: function (e) {  
var ts = this;  
 var code = this.data.identity //identity 为你输入的身份证  
console.log(code) 
var city = { 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: "国外 " }; 
var tip = ""; 
 var pass = true; 
var reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/; 
if(!code || !code.match(reg)) { 
tip = "身份证号格式错误"; 
pass = false;
} else if (!city[code.substr(0, 2)]) { 
tip = "地址编码错误"; pass = false;
} else { 
//18位身份证需要验证最后一位校验位 
if (code.length == 18) {  code = code.split('');  
//∑(ai×Wi)(mod 11)  
//加权因子  
 var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];  
//校验位  var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];  
var sum = 0;  
var ai = 0;  
var wi = 0;  
for (var i = 0; i < 17; i++) {   
ai = code[i];   
 wi = factor[i];   
sum += ai * wi;  
 }  
var last = parity[sum % 11];  
if (parity[sum % 11] != code[17]) {   
 tip = "校验位错误";   
 pass = false;   
 }  
 } 
 }  
console.log("pass==="+pass) 
 if (pass) { ts.setData({ allow_id: true }); wx.setStorageSync("idcard", code) } 
 if (!pass) console.log("tip" + tip); 
return pass;
},
···

如果身份证输入正确,控制台输出的是ture,反之false。如果是错误的身份证号码,会提示那里错误。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype Function对象 学习
Jul 12 Javascript
JQuery给元素添加/删除节点比如select
Apr 02 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
vue构建单页面应用实战
Apr 10 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
深入剖析Express cookie-parser中间件实现示例
Feb 01 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 Javascript
jQuery属性选择器用法实例分析
Jun 28 #jQuery
jQuery位置选择器用法实例分析
Jun 28 #jQuery
jQuery层叠选择器用法实例分析
Jun 28 #jQuery
jQuery内容选择器与表单选择器实例分析
Jun 28 #jQuery
jQuery子选择器与可见性选择器实例分析
Jun 28 #jQuery
JavaScript中callee和caller的区别与用法实例分析
Jun 28 #Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 #Javascript
You might like
PHP 读取文件的正确方法
2009/04/29 PHP
php与paypal整合方法
2010/11/28 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
python导入pandas具体步骤方法
2019/06/23 Python
python3 实现调用串口功能
2019/12/26 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年采购部工作总结
2015/04/23 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
为Centos安装指定版本的Docker
2022/04/01 Servers