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


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 相关文章推荐
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
jQuery的live()方法对hover事件的处理示例
Feb 27 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
Oct 07 Javascript
Javascript的闭包详解
Dec 26 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
微信小程序实现星级评价效果
Dec 28 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
珊瑚虫IP库浅析
2007/02/15 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
java script编程起步(第三课)
2007/01/10 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
酒店值班经理的工作职责范本
2014/02/18 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
企业贷款委托书格式
2014/09/12 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
优秀团员自我评价
2015/03/10 职场文书
运动会加油稿50字
2015/07/21 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python