mysql正则表达式过率身份证号
时间: 2023-08-09 11:01:33 浏览: 123
MySQL正则表达式可以用于过滤身份证号。身份证号是由18位数字和字符组成的,具体格式是前6位是行政区划代码,接下来8位是出生年月日,然后是4位的顺序码,最后一位是校验码。根据这些规则,可以使用MySQL正则表达式来匹配身份证号。
下面是一个示例正则表达式,用于匹配身份证号的格式:
^[1-9]\d{5}(18|19|([2-9]\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$
在MySQL中可以使用REGEXP关键字来进行正则表达式的匹配。示例查询语句如下:
SELECT * FROM table_name WHERE column_name REGEXP '^[1-9]\d{5}(18|19|([2-9]\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$';
以上语句将会返回符合身份证号格式的所有数据。
需要注意的是,以上示例只是匹配了身份证号的格式,并不能确保该身份证号是真实有效的。对于真实有效性的验证,需要考虑到身份证号的校验码计算等更复杂的逻辑,可以结合使用MySQL的其他函数来完成该验证。
相关问题
mysql正则表达式判断身份证是否合法
可以使用正则表达式进行身份证的合法性判断,具体的正则表达式可以参考以下代码:
```
SELECT
id_card,
CASE WHEN id_card REGEXP '^[1-9]\\d{5}(19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\\d|3[0-1])\\d{3}[0-9Xx]$' THEN '合法'
ELSE '不合法'
END AS is_valid
FROM
table_name;
```
其中,正则表达式的意义为:
- ^:表示字符串的开头。
- [1-9]:表示第一个字符为数字1-9。
- \\d{5}:表示后面跟着5个数字。
- (19|20):表示年份的前两位是19或20。
- \\d{2}:表示年份的后两位是两个数字。
- (0[1-9]|1[0-2]):表示月份为01-12。
- (0[1-9]|[1-2]\\d|3[0-1]):表示日期为01-31。
- \\d{3}:表示后面跟着3个数字。
- [0-9Xx]:表示最后一位可能是数字0-9,也可能是字母X或x。
- $:表示字符串的结尾。
如果身份证号码符合以上的正则表达式,则认为是合法的,否则就是不合法的。
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]$';
```
这个正则表达式匹配中国大陆的第一代和第二代身份证号码。如果您需要匹配其他类型的身份证号码,请自行修改正则表达式。
阅读全文