<span>$a</span> = '130424770827005'<span>; </span><span>$reg18</span> = '/[1-9]\d{5}(((1[9|8])\d{2})|(20[0-1]\d))((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)/'<span>; </span><span>$reg15</span> = '/[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}/'<span>; 问题是对年份进行了判断从1800到2019<br />等4年就需要修改。<br />其实还可以更严格些。 </span><span>preg_match</span>(<span>$reg15</span>,<span>$a</span>,<span>$mm</span><span>); </span><span>var_dump</span>(<span>$mm</span><span>); 输出结果 </span><span>array</span> (size=6<span>) </span>0 => <span>string</span> '130424770827005' (length=15<span>) </span>1 => <span>string</span> '08' (length=2<span>) </span>2 => <span>string</span> '08' (length=2<span>) </span>3 => <span>string</span> '' (length=0<span>) </span>4 => <span>string</span> '27' (length=2<span>) </span>5 => <span>string</span> '27' (length=2)