var s="11111111111111x"if (s.length==18){
if (s.substring(17).toUpperCase()=="X"){
if (isNaN(s.substr(0,17))){
alert("不是身份证号码")
}
else{
alert("是身份证号码")
}
}
else{
if (isNaN(s)){
alert("不是身份证号码")
}
else{
alert("是身份证号码")
}
}
}
else if(s.length==15 && !isNaN(s)){
alert("是身份证号码")
}
else{
alert("不是身份证号码")
}
如果要做到全国通用。估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。
首先看看身份证是怎么构造的:
首先:
1)地区代码:表示出生地,上图为北京市朝阳区
2)出生日期:不解释,只要合理就好
3)顺序号:最后一位为奇数表示性别男,偶数性别女
4)校验位:这是系统验证比较关键的一位,由前面17位通过公式计算得出,具体公式在此不做讨论,因为其结果为数字0~9或者字母X
这些条件都知道了。
就可以开始了:
//首先最迟判断身份证号码的位数(18)var CardNumber=""//待验证的身份证号码
var iscard=/^\d{17}([0-9]|X)$/
if(iscard.text(CardNumber)){
//验证身份证的"地区代码(前6位数字,这里需要搜集各个地区的代码...)"
if(这里校验地区代码){
if(这里校验出生日期){
//校验出生日期时,会牵扯到日历算法(计算某年的某月有多少天,防止用户随意输入大于31的日期)
//如果判断到这里了,就可以初步确定为"合法有效"的身份证号码了。
//因为“校验位”相对而言较复杂。如果楼主有意思。可以百度找资料。
}
}
}
function onchange(){//这里还要加些正则表达式判断一下,判断输入的是身份证格式
var len = document.getElementById("id").value.length
if(len>=13&&len<=15){
var content = document.getElementById("id").value
var str = content.split("")
var a
for(var i=5i<11i++){
a+=str[i]
//把a转换成生日的格式
}
document.getElementgetById("brithdate").value=a
}
}
大致思路是这样的,也可以用AJAX做出来