用php写十八位身份证的正则表达式该怎么办

我用/^[0-9]{6}[1-2]{1}[0-9]{3}[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-9]{3}[a-zA-Z0-9]{1}$/是否可以用?求指教
最新回答
青春还年少

2024-04-26 09:11:44

//身份证正则表达式(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-04-26 03:04:33

十八位身份证的号码最后一位可能是X或数字,所以正则表达式如下:
/\d{17}[\d|X]/
风行水上

2024-04-26 11:03:59

写个filter吧