正则表达式截取⾝份证号码加密的⽅法
下⾯⼀段简单的代码给⼤家介绍正则表达式截取⾝份证号码加密的⽅法,具体代码如下所⽰:
直接上代码:
var idCard = '420119188404098978X';
//保留前四位和后四位,中间⽤*号加密
idCard = place(/(\d{4})\d*([0-9a-zA-Z]{4})/,"$1******$2");
//结果:4201******978X
PS:下⾯介绍⽐较规范的⾝份证号验证正则表达式
⼀些要求⽤户信息⽐较严格的地⽅⽐如⽤户注册、登录的时候都需要验证⽤户的⾝份证是否合法,⽽通过这些验证能⼤⼤的过滤掉很多⽔客,给你的系统带来⾮常精准的⽤户信息。
很多时候我们都是通过⼀组正则表达式来判断⽤户输⼊的⾝份证是否合法,那在⽤正则表达式判断之前,你对⾝份证号的组成有多少了解呢?下⾯来说说⼀个⾝份证号⾥⾯包含了多少的信息:
1、号码的结构
公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位校验码组成。排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。
2、地址码(前六位数)
表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码,按gb/T2260的规定执⾏。
3、出⽣⽇期码(第七位⾄⼗四位)
表⽰编码对象出⽣的年、⽉、⽇,按gb/T7408的规定执⾏,年、⽉、⽇代码之间不⽤分隔符。
4、顺序码(第⼗五位⾄⼗七位)
表⽰在同⼀地址码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈编定的顺序号,顺序码的奇数分配给男性,偶数分配给⼥性。
5、校验码(第⼗⼋位数)
作为尾号的校验码,是由号码编制单位按统⼀的公式计算出来的,如果某⼈的尾号是0-9,都不会出现X,但如果尾号
是10,那么就得⽤X来代替,因为如果⽤10做尾号,那么此⼈的⾝份证就
变成了19位。X是罗马数字的10,⽤X来代替10,可以保证公民的⾝份证符合国家标准。
在知道⾝份证号结构组成各部分的意思后,我们开始进⼊主题:
1、定义⼀个全国地区的对象
var aCity={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:"
2、正则表达式判断
function isCardID(sId){
var iSum=0 ;
var info="" ;
if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输⼊的⾝份证长度或格式错误";
place(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null) return "你的⾝份证地区⾮法";
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new place(/-/g,"/")) ;
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "⾝份证上的出⽣⽇期⾮法";
正则匹配身份证for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
if(iSum%11!=1) return "你输⼊的⾝份证号⾮法";
//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"⼥");//此次还可以判断出输⼊的⾝份证号的⼈性别
return true;
}
总结
以上所述是⼩编给⼤家介绍的正则表达式截取⾝份证号码加密的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论