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


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 相关文章推荐
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
Jan 21 Javascript
jquery ajax分页插件的简单实现
Jan 27 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
解决vue刷新页面以后丢失store的数据问题
Aug 11 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 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使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python中正则的使用指南
2016/12/04 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
python初步实现word2vec操作
2020/06/09 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
PHP如何防止SQL注入
2014/05/03 面试题
为什么要用EJB
2014/04/17 面试题
优秀经理事迹材料
2014/02/01 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
学校后勤岗位职责
2014/02/19 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
督导岗位职责范本
2015/04/10 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android