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


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 相关文章推荐
用javascript操作xml
Nov 04 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
老生常谈js动态添加事件--- 事件委托
Jul 19 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
Aug 31 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
Node.js API详解之 vm模块用法实例分析
May 27 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 Javascript
js实现查询商品案例
Jul 22 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
Python中多线程thread与threading的实现方法
2014/08/18 Python
python开发简易版在线音乐播放器
2017/03/03 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
django+echart数据动态显示的例子
2019/08/12 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
贷款承诺书范文
2014/05/19 职场文书
酒店开业策划方案
2014/06/02 职场文书
2015年营业员工作总结
2015/04/23 职场文书
法定授权委托证明书
2015/06/18 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书