身份证得正则正则表达式是什么?

2024-12-03 15:00:20
推荐回答(4个)
回答1:

1、创建测试表,create table test_certno(cert_no varchar2(50));

2、插入验证数据;

insert into test_certno values('311224198611012011');

insert into test_certno values('301224195509012011');

insert into test_certno values('211224199610012011');

insert into test_certno values('21122419961001201X');

insert into test_certno values('321224199018012011');

insert into test_certno values('101224198700012011');

3、编写正则表达式sql;select *  from test_certno a,  (select * from test_certno t  where REGEXP_LIKE(t.cert_no,  '(^[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}[0-9Xx]$)')) b where a.cert_no = b.cert_no(+)

4、查询验证结果,发现未匹配上的身份证号码;

回答2:

正则就是你身份证的正面,正面就是表达正则
以黑龙江省的身份证给你讲一下:

15位
1-6位是你所在的地方
7-12位是你的生日
13-15位是你的身份证号

18位
1-6位是你所在的地方
7-14位是你的生日
15-17位是你的身份证号
18位是校验码

身份证号1 3 5 7 9是男性 2 4 6 8 0是女性
校验码不按男女算,有的还是X.

如:
230102800808002(15位)
23黑龙江省01哈尔滨市02道里区800808生日002身份证号

230102198008080021
23黑龙江省01哈尔滨市02道里区19800808生日002身份证号1校验码
望采纳啊

回答3:

15位数身份证验证正则表达式:
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

18位数身份证验证正则表达式 :
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;

回答4:

//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;