JS验证身份证的正则表达式?

JavaScript017

JS验证身份证的正则表达式?,第1张

18位身份证:

先用这个表达式取出出生年份

\d{6}(\d{4})\d{8}

$1就是四位的年份,比如1986

在用这个表达式判断是不是在1900-2000之间

(19\d{2}|2000)

15位身份证,这种身份证1900和2000是区分不出来的,这种身份证年份只用后两位表示

先用这个表达式取出出生年份

\d{6}(\d{2})\d{7}

$1就是二位的年份,比如86

在用这个表达式判断是不是在1900-2000之间

\d{2}

这是主要的方法,细节就不写啦,呵呵,我还有活,祝你好运

这个简单,在jsp页面上写个脚本,首先第一步(你的字符串这里设为str):

用str.length来做参数判断是否为18位

2.截取字符串前十七个,用正则判断

3.最后一个再用正则判断

正则的脚本如下:(首先申明,未经测试)

function isNumber(str){

var rege=/[\d]/g

var a=str.match(rege)

if(a==null)

alert('必须是数字')

}

function isNumberOrAlpha(str){

var rege=/[\da-zA-Z]/g

var a=str.match(rege)

if(a==null)

alert('必须是数字或字母')

}

对于正则表达式,你可以在csdn网上找一本《精通正则表达式看》

function VerifyInput(){

var CardNo=document.myform.shenfeng.value

var CardNo2=document.myform.shenfeng2.value

if(CardNo!=CardNo2){

alert("2次输入数据不一致!从新输入!")

return false

}

if ((CardNo == "")||(!(isNumber(CardNo))&&(CardNo.length == 15))||(!(isNumber(CardNo.substr(0,17)))&&(CardNo.length == 18))||((CardNo.length != 15)&&(CardNo.length != 18)))

{

alert("您的身份证号码输入有误,必需是15数字或18位,请重新检查并输入!")

return false

}

else if (CardNo.length == 15)

{

if(CardNo.substr(8,2)>12||CardNo.substr(8,2)<1)

{

alert("您身份证的出生“月”输入有误,请重新检查并输入!")

return false

}

if(CardNo.substr(10,2)>31||CardNo.substr(10,2)<1)

{

alert("您身份证的出生“日”输入有误,请重新检查并输入!")

return false

}

}

else if (CardNo.length == 18)

{

if(CardNo.substr(6,4)<1900||CardNo.substr(6,4)>2100)

{

alert("您身份证的出生“年”输入有误,请重新检查并输入!")

return false

}

if(CardNo.substr(10,2)>12||CardNo.substr(10,2)<1)

{

alert("您身份证的出生“月”输入有误,请重新检查并输入!")

return false

}

if(CardNo.substr(12,2)>31||CardNo.substr(12,2)<1)

{

alert("您身份证的出生“日”输入有误,请重新检查并输入!")

return false

}

}

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

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

if (CardNo.charAt(17) == 'x')

{

CardNo = CardNo.replace("x","X")

}

var checkDigit = CardNo.charAt(17)

var cardNoSum = 0

for (var i=0i<CardNo.length-1i++)

{

cardNoSum = cardNoSum + CardNo.charAt(i)*Wi[i]

}

var seq = cardNoSum%11

var getCheckDigit = Ai[seq]

if (checkDigit != getCheckDigit)

{

alert("您的身份证号码校验失败,请重新检查并输入!")

return false

}

return true

}

else

{

return true

}

}