当前位置:编程学习 > JAVA >>

请教一个JS身份证验证问题

            if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
               alert("身份证号格式错误");
            }
请问这段代码到底哪里出问题了呢,code为身份证号,绝大部分身份证可以通过,但是部分身份证却不可以,本人没深入了解过正则表达式,请明白的大大给看看,非常感谢 JS身份证验证问题 --------------------编程问答--------------------  if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))  
改为这个吧 --------------------编程问答-------------------- 请问我上段代码的问题是出在哪里呢 --------------------编程问答-------------------- 那些不能验证的,看看。 --------------------编程问答-------------------- /^ 开头
\d{6} //-6位数字
(18|19|20)? //年份前两位(指定了18,18,20),其他的不满足
\d{2} //年份后两位
(0[1-9]|1[12]) // 月份
(0[1-9]|[12]\d|3[01]) //日
\d{3} //三位数字
(\d|X)// 一位数字或者X
$/i // 忽略大小写

整个正则校验18位,如果是少于18位的 肯定校验不过
网上有很多这样的例子,拿来一个研究下就OK

一楼的判断虽然可行,但是比较简单,如果想要很严格的校验身份证,就要查看身份证生成规则了
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,