b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

15位和18位ID卡的正则表达式和验证

电脑杂谈  发布时间:2020-07-04 15:17:29  来源:网络整理

号15位升18位_15位号码验证_号验证

1. 简单的正则表达式:

(1)preg_match(“ / ^(\ d {18,18} | \ d {15,15} | \ d {17,17} x)$ /”,$ id_card)

(2)preg_match(“ / ^(\ d {6})(18 | 19 | 20)?(\ d {2})([01] \ d)([0123] \ d)(\ d {3})(\ d | X)?$ /“,$ id_card)

(3)preg_match(“ /(^ \ d {15} $ /)|(\ d {17}(?: \ d | x | X)$ /),$ id_card)

2. 复杂而严格的验证:

//这可以验证15位和18位ID卡,包括生日和校验位的验证.

//如果您有兴趣,还可以添加对位置的验证,即前6位数字是合法的,有些是非法的.

函数isIdCardNo(num)

{

num = num.toUpperCase();

// ID卡号是15位或18位. 如果全部是15位数字,则18位中的前17位是数字,最后一位是校验位,可以是数字,也可以是字符X.

if(!(/(^ \ d {15} $)|(^ \ d {17}([0-9] | X)$)/. test(num))

{

alert(“输入的ID号码长度不正确,或不符合规定!\ n15位数字应为全数字,而18位数字中的最后一位可以为数字或X. ”) ;

返回假;

}

//根据ISO 7064: 1983生成校验位. MOD11-2,X可以视为数字10.

//分别对出生日期和校验位进行分析

var len,re;

len =数字长度;

如果(len == 15)

号15位升18位_号验证_15位号码验证

{

re = new RegExp(/ ^(\ d {6})(\ d {2})(\ d {2})(\ d {2})(\ d {3})$ /); <

var arrSplit = num.match(re);

//检查生日日期是否正确

var dtmBirth = new Date('19'+ arrSplit [2] +'/'+ arrSplit [3] +'/'+ arrSplit [4]);

var bGoodDay;

bGoodDay =(dtmBirth.getYear()== Number(arrSplit [2]))&&((dtmBirth.getMonth()+ 1)== Number(arrSplit [3]))&&(dtmBirth.getDate()= = Number(arrSplit [4]));

如果(!bGoodDay)

{

alert(“输入的号中的生日不正确!”)

返回假;

}

其他

{

//将15位转换为18位号码

//根据ISO 7064: 1983生成校验位. MOD11-2,X可以视为数字10.

var arrInt = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);

var arrCh = new Array('1','0','X','9','8','7','6','5','4','3',' 2');

var nTemp = 0,i;

num = num.substr(0,6)+'19'+ num.substr(6,num.length-6);

for(i = 0; i <17; i ++)

号15位升18位_15位号码验证_号验证

{

nTemp + = num.substr(i,1)* arrInt [i];

}

num + = arrCh [nTemp%11];

返回数字;

}

}

如果(len == 18)

{

re =新RegExp(/ ^(\ d {6})(\ d {4})(\ d {2})(\ d {2})(\ d {3})([0-9 ] | X)$ /);

var arrSplit = num.match(re);

//检查生日日期是否正确

var dtmBirth =新日期(arrSplit [2] +“ /” + arrSplit [3] +“ /” + arrSplit [4]);

var bGoodDay;

bGoodDay =(dtmBirth.getFullYear()== Number(arrSplit [2]))&&((dtmBirth.getMonth()+ 1)== Number(arrSplit [3]))&&(dtmBirth.getDate()= = Number(arrSplit [4]));

如果(!bGoodDay)

{

alert(dtmBirth.getYear());

alert(arrSplit [2]);

alert(“输入的号中的生日不正确!”)

返回假;

号验证_号15位升18位_15位号码验证

}

其他

{

//验证18位ID卡的验证码正确.

//根据ISO 7064: 1983生成校验位. MOD11-2,X可以视为数字10.

var valnum;

var arrInt = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);

var arrCh = new Array('1','0','X','9','8'15位号码验证,'7','6','5','4','3',' 2');

var nTemp = 0,i;

for(i = 0; i <17; i ++)

{

nTemp + = num.substr(i,1)* arrInt [i];

}

valnum = arrCh [nTemp%11];

if(valnum!= num.substr(17,1))

{

alert('18位ID卡的验证码不正确!它应该是: '+ valnum);

返回假;

}

返回数字;

}

15位号码验证_号验证_号15位升18位

}

返回假;

}

3. 严格验证:


热点图片
拼命载入中...