PHP验证身份证的正则表达式

作者:enenba | 发表于:2012-01-04 23:15 | 分类:正则表达式

先分析18位中国身份证格式:

首6码为地方码

7~14码为出生日期码
15~18码为顺序编号。用于同年同月同日同地方出生的人

第17码则为 GENDER码, 男单数, 女双数
以上的代码格式信息是网上找的。

 

可以确定的是生日期码

也就是XXXXXX19000000XXXX   ~ XXXXXX20991231XXXX 

正则如下

\d{6}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{4}

 可以匹配一下试试吧

 

符上PHP版测试:

 

<?php
$preg='/\b\d{6}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{4}\b/'; 
$str='441402198105266678';
$rr = preg_match($preg, $str);
if($rr) {
	echo 'OK';
}else {
	echo 'NO';
}
?>

 

 PS:以上的身份证号码是随便百度一个就贴上去的,只用测试,与本人无关

 

 

上一篇: 深入浅出之正则表达式 之前言介绍   |   下一篇:正则匹配IP地址» 标签: PHP验证 正则表达式 PHP正则

评论: