今天遇到需要校验身份证号的业务需求,第一想法是用正则表达式来校验。

身份证号有15位和18位两种,正则表达式如下:

十八位:

 ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

十五位:

^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$

FYI: