您的位置:首页 > 编程语言 > Java开发

java验证身份证号码

2017-09-12 19:05 363 查看
介绍

xxxxxx yyyy MM dd 375 0     十八位

xxxxxx    yy MM dd   75 0     十五位

地区: 
[1-9]\d{5}


年的前两位: 
(18|19|([23]\d))
           
1800-2399

年的后两位:
 \d{2}


月份: 
((0[1-9])|(10|11|12))
 

天数: 
(([0-2][1-9])|10|20|30|31)
         
闰年不能禁止29+

三位顺序码: 
\d{3}


两位顺序码: 
\d{2}


校验码: 
[0-9Xx]


正则表达式

十八位: 
^[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}$


总:

^[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}$
)

// 定义判别用户身份证号的正则表达式(要么是18位,要么是15位,最后一位可以为字母)

Pattern idNumPattern = Pattern
.compile("(^[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}$)");
// 通过Pattern获得Matcher
Matcher idNumMatcher = idNumPattern.matcher(bookingContact.getIdCard());
// 判断用户输入是否为身份证号
if (idNumMatcher.matches()) {

               }else{

               System.out.println (“请输入正确的身份证号码”);

   }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则 java