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


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 代码集(学习js的朋友可以看下)
Jul 22 Javascript
javascript之学会吝啬 精简代码
Apr 25 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
Dec 31 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
jQuery操作json常用方法示例
Jan 04 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
May 16 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
Nov 14 Javascript
基于JS实现视频上传显示进度条
May 12 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 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
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP函数积累总结
2019/03/19 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
Javascript 二维数组
2009/11/26 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python中join和split用法实例
2015/04/14 Python
Django的Modelforms用法简介
2019/07/27 Python
pycharm快捷键汇总
2020/02/14 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python接口测试get请求过程详解
2020/02/28 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
Pycharm调试程序技巧小结
2020/08/08 Python
中国旅游网站:途牛旅游网
2019/09/29 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
explicit和implicit的含义
2012/11/15 面试题
中间件分为哪几类
2012/03/14 面试题
组工干部对照检查材料
2014/08/25 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
实习科室评语
2015/01/04 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
新党员入党决心书
2015/09/22 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
golang特有程序结构入门教程
2021/06/02 Python
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
CSS的calc函数用法小结
2022/06/25 HTML / CSS