身份证号码正则匹配(正则表达式)
时间: 2024-02-25 21:50:43 浏览: 315
身份证号码的正则表达式可以用来验证身份证号码的格式是否正确。是一个常见身份证号码正则表达式:
```
^(\\d{})(19|20)?(\\d{2})(0[-9]|1[0-2])(0[1-9]|[12]\\d|3[01])(\\d{3})(\\d|X|x)?$
```
该正则表达式的含义如下:
- `^`:表示匹配字符串的开始位置
- `(\\d{6})`:表示匹配6位数字,用于匹配身份证号码的前6位地区代码
- `(19|20)?`:表示匹配19或20,可选项,用于匹配身份证号码的年份的前两位
- `(\\d{2})`:表示匹配2位数字,用于匹配身份证号码的年份的后两位
- `(0[1-9]|1[0-2])`:表示匹配01到09或10到12,用于匹配身份证号码的月份
- `(0[1-9]|[12]\\d|3[01])`:表示匹配01到09或10到29或30到31,用于匹配身份证号码的日期
- `(\\d{3})`:表示匹配3位数字,用于匹配身份证号码的顺序码
- `(\\d|X|x)?`:表示匹配一个数字或字母X(大小写不限),可选项,用于匹配身份证号码的校验码
- `$`:表示匹配字符串的结束位置
请注意,这只是一个简单的正则表达式,只能验证身份证号码的格式是否正确,不能验证身份证号码的真实性。
相关问题
身份证号码正则表达式验证
身份证号码的正则表达式验证可以使用以下规则来进行匹配:
18位身份证号码的正则表达式:
```
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[01])\d{3}(\d|X|x)$
```
15位身份证号码的正则表达式:
```
^[1-9]\d{7}((0\d)|(1[0-2]))((0\d)|([1-2]\d)|(3[0-1]))\d{3}$
```
其中,18位身份证号码的正则表达式中:
- 第一位为非零数字;
- 接下来的5位是地区代码;
- 然后是年份,可以是19开头或者20开头;
- 接着是月份,取值范围为01到12;
- 然后是日期,取值范围为01到31;
- 后面是顺序码,共3位数字;
- 最后一位可能是数字或者X/x。
15位身份证号码的正则表达式中:
- 第一位为非零数字;
- 接下来的7位是地区代码;
- 然后是年份,取值范围为00到99;
- 接着是月份,取值范围为01到12;
- 然后是日期,取值范围为01到31;
- 最后是顺序码,共3位数字。
mysql 身份证号码正则表达式
以下是一个简单的 MySQL 正则表达式,可以用于验证身份证号码:
```sql
SELECT * FROM table_name WHERE id_number REGEXP '^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$';
```
这个正则表达式匹配中国大陆的第一代和第二代身份证号码。如果您需要匹配其他类型的身份证号码,请自行修改正则表达式。
阅读全文