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


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学习笔记(二) js对象
Oct 25 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
javascript数组详解
Oct 22 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
获取JavaScript异步函数的返回值
Dec 21 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
vue组件之Alert的实现代码
Oct 17 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 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
实用函数4
2007/11/08 PHP
Smarty安装配置方法
2008/04/10 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
PDO::errorInfo讲解
2019/01/28 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
javascript第一课
2007/02/27 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python set常用操作函数集锦
2017/11/15 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
Why we need EJB
2016/10/20 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
外贸业务员工作职责
2014/01/06 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
网站出售协议书范文
2014/10/10 职场文书
广告业务员岗位职责
2015/02/13 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python