php 身份证的正则表达式怎么写?

我请分析下,php 身份证的正则表达式怎么写??

//身份证正则表达式(15位)
$isIDCard1="/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/";
//身份证正则表达式(18位)
$isIDCard2="/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/";

以上的正则表达式匹配的字符,只能匹配出数字的号码,现在的身份证好多,最后的都带有字母,如X, 这个最常见,其他的我不知道有没有,如果最末尾的是字符的话,上面的匹配内容就不正确了,有哪位知道的正则表达式可以匹配带字母和不带字母的通用的表达式,麻烦贴上来,谢谢,如果有其他常用的表达式也一并贴上来,如邮箱,电话号码等
这个是修正后的
//身份证正则表达式(15位)
$isIDCard1="/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/";
//身份证正则表达式(18位)
$isIDCard2="/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/";

preg_match($isIDCard1,身份证号码, $matches)
最新回答
像风一样

2024-05-05 03:27:20

$IdCard = "/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i";
提示 :正则格式: ‘/
正则表达式
/模式修正符’;
所以 添加 i 是忽略英文字母大小写的
逆风の蒲公英

2024-05-05 06:25:43

一般地 身份证有15位或18位  18位的最后一位还有可能是字母X或x  

/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
吶誰咱吢疼

2024-05-05 07:35:02

15: /^\d{14}(\d|x)$/
18: /^\d{17}(\d|x)$/
这样就可以了,不用那么复杂吧
若风

2024-05-05 08:02:13

看看这个:
http://hi.baidu.com/bbee888/blog/item/f07737933dc60d80a877a429.html