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


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 在线压缩和格式化收藏
Jan 16 Javascript
基于jQuery的360图片展示实现代码
Jun 14 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
Jan 22 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
webpack入门+react环境配置
Feb 08 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
Feb 15 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 Javascript
微信小程序实现签字功能
Dec 23 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
Vue中qs插件的使用详解
2020/02/07 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python实现二维有序数组查找的方法
2016/04/27 Python
Python中查看文件名和文件路径
2017/03/31 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python交换两个变量的值方法
2019/01/12 Python
浅谈python3中input输入的使用
2019/08/02 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
python 实现客户端与服务端的通信
2020/12/23 Python
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
党支部创先争优承诺书
2014/08/30 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
求职自我评价范文
2015/03/09 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB