我是靠谱客的博主 干净花瓣,这篇文章主要介绍正则表达,校验身份证号,现在分享给大家,希望可以做个参考。

检验身份证号是否输入正确,代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//react项目的校验 //校验方法 const validateCardid = (rule, value, callback) => { var value = value.replace(/s/g, "");//去除空格 var a_idCard = value.split("");//得到数组 if(value.length == 18){ if(!(isValidityBrithBy18IdCard(value)&&isTrueValidateCodeBy18IdCard(a_idCard))){ //进行18位身份证的基本验证和第18位的验证 callback([new Error('身份证输入不合法')]); }else{ var sexNum=value.substring(16,17); var birth=value.substring(6,10)+"年"+value.substring(10,12)+"月"+value.substring(12,14)+"日"; callback(); } }else if(value.length == 0){ callback(); }else{ callback(new Error('身份证输入不合法')); } }
复制代码
1
判断身份证号码为18位时最后的验证位是否正确,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X const isTrueValidateCodeBy18IdCard=(a_idCard)=> { var sum = 0; // 声明加权求和变量 if (a_idCard[17].toLowerCase() == 'x') { a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作 } for ( var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i]; // 加权求和 } var valCodePosition = sum % 11; // 得到验证码所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true; } else { return false; } }
复制代码
1
验证18位数身份证号码中的生日是否是有效生日,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const isValidityBrithBy18IdCard=(idCard18)=>{ var year = idCard18.substring(6,10); var month = idCard18.substring(10,12); var day = idCard18.substring(12,14); var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); // 这里用getFullYear()获取年份,避免千年虫问题 if(temp_date.getFullYear()!=parseFloat(year) ||temp_date.getMonth()!=parseFloat(month)-1 ||temp_date.getDate()!=parseFloat(day)){ return false; }else{ return true; } }

 

最后

以上就是干净花瓣最近收集整理的关于正则表达,校验身份证号的全部内容,更多相关正则表达内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(210)

评论列表共有 0 条评论

立即
投稿
返回
顶部