如果要做到全国通用。估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。
首先看看身份证是怎么构造的:
首先:
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 CheckCardNo(card){
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
if(reg.test(card) === false)
{
alert("身份证输入不合法")
return false
}
}
CheckCardNo('123456778')