java 校验身份证 正则

当我国实行身份证制度时,最初使用的是15位身份证号码。这个号码包括了6位地址码、6位出生日期码和3位顺序码。然而,随着社会发展和信息技术的进步,这种身份证号码逐渐显露出一些不足之处,比如容易重复、容易伪造等。因此,1999年起,中国开始颁发18位身份证号码,以取代15位身份证号码。

18位身份证号码在15位身份证号码的基础上增加了两位校验码,用于提高身份证号码的唯一性和防伪性。这两位校验码是根据前面17位的数据通过特定的算法计算得出的,以确保身份证号码的有效性和唯一性。这种改变使得身份证号码更加安全、准确,也更符合现代社会对于身份验证和信息管理的需求。

除了增加校验码外,18位身份证号码还可以提供更多的信息。例如,通过前6位地址码可以确定持证人的户籍所在地,而通过6位出生日期码可以确定持证人的出生年月日。这使得18位身份证号码在信息管理和数据统计方面更具优势。

总的来说,15位身份证号码是早期使用的身份证号码,而18位身份证号码则是在其基础上增加了校验码,提高了安全性和准确性,符合现代社会的需求

//18位
String id_18="^[1-9][0-9]{5}(18|19|20)[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}([0-9]|(X|x))";
//15位
String id_15="^[1-9][0-9]{5}[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{2}[0-9]";
public static void main(String[] args) {

String id_18="^[1-9][0-9]{5}(18|19|20)[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}([0-9]|(X|x))";

String id_15="^[1-9][0-9]{5}[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{2}[0-9]";

String id_valid="("+id_18+")"+"|"+"("+id_15+")";

Pattern pattern =Pattern.compile(id_valid);

Matcher matcher =pattern.matcher("身份证号18/15位");

System.out.println(matcher.matches());

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值