当前位置: 代码迷 >> Java Web开发 >> 解释一段正则表达式(从身份证获取生天天期)
  详细解决方案

解释一段正则表达式(从身份证获取生天天期)

热度:6147   发布时间:2013-02-25 21:11:23.0
解释一段正则表达式(从身份证获取生日日期)
<script language="javascript">
function getBirthday(){
var str=form1.IDCard.value; //获取输入的身份证号码
var objExp=/\d{6}([12]\d{3})([01]\d)([0123]\d)\d{4}/; //创建RegExp对象
arr=objExp.exec(str); //执行模式匹配
if(arr!=null){
alert("您的身份证号为:"+arr[0]+"\r出生日期为:"+arr[1]+"-"+arr[2]+"-"+arr[3]);
}else{
alert("您输入的身份证号码不合法!");
}
}
</script>


objExp=/\d{6}([12]\d{3})([01]\d)([0123]\d)\d{4}/;这段怎么解释?从str先读取6个数字。然后呢


------解决方案--------------------------------------------------------
/\d{6}前六位匹配
[12]第七位 年份只能1 和2里面选 毕竟没3XXX年 
\d{3}八-十 是个数字就行
总结 7-10位 年份开始只能是1和2 后三位是数字
[01] 十一位 代表月份 你没见过20月吧 只能是 0 或者1
\d 十二位 也是月份 0-9,9个月
总结 11位 月份开始只能是1和2 后一位是数字
[0123] 十三位 代表日子 一个月30天 不可能出现40几日
\d 十四位 0-9
总结 13位 日开始只能是1、2、3 后一位是数字
这函数没用过,可能能匹配上就返回一个STR, 如果有括号 就吧括号内能匹配的组合成数组返回