java 校验身份证 正则

我真睡不饱 2024-07-12 12:35:01 阅读 68

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

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

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

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

<code>//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))";code>

//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]";code>

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))";code>

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]";code>

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

Pattern pattern =Pattern.compile(id_valid);

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

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

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。