18/15位:身份证正则表达式

18位 2代身份证

(^[1-9]\\d{5})([1-9]\\d{3})((0[1-9])|(10|11|12))(([0-2][1-9])|30|31)(\\d{3})([0-9Xx]$)
18位 2代身份证
xxxxxx yyyy MM dd xxx x-->校验码
[1-6]: [1-9]\\d{5} //省市区
[7-14]: ([1-9]\\d{3})((0[1-9])|(10|11|12))(([0-2][1-9])|30|31)  //出生年月日
[15-17]: \\d{3} //同一地址码所标示的区域范围内对同年同月同日生人编订的顺序码,
[17]性别,奇男偶女,
[18]: \\d{3})([0-9Xx] //校验码
[1-9]\\d(5}:不能0开头,匹配后续5位
闰年不能禁止29+
15位 1代身份证

(^[1-9]\\d{5})(\\d{2})((0[1-9])|(10|11|12))(([0-2][1-9])|30|31)(\\d{3}$)
1代 15位
xxxxxx yy MM dd xxx 
[1-6]: [1-9]\d{5}  //省市区,
[7-12]: (\\d{2})((0[1-9])|(10|11|12)) //出生年月日
[12-15]: \\d{3} //同一地址码所标示的区域范围内对同年同月同日生人编订的顺序码,
[15]性别,奇男偶女,
//闰年不能禁止29+

 栗子:

String id = "311253208001311249";//2代
String id1 = "311253000131124";//1代

Boolean matches3 = id.matches("(^[1-9]\\d{5})  //省市区
                             ([1-9]\\d{3})((0[1-9])|(18|11|12))(([0-2][1-9])|30|31)//年月日
                             (\\d{3})    //顺序码
                             ([0-9Xx]$)");    //标识码

Boolean matches4 = id1.matches("(^[1-9]\\d{5})
                                (\\d{2})((0[1-9])|(10|11|12))(([0-2][1-9])|30|31)                    
                                (\\d{3}$)");

System.out.println(matches3);//true
System.out.println(matches4);//true

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值