正则表达式验证身份证

身份证可以为15位也可以为18位

从身份证中得出出生日期

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * 用正则表达式验证身份证号码
 */
public class idCardTest {

    public static void testID_Card(){
        //测试是否为合法的身份证号码
        String[] str={
                "130681198712092019",
                "13068119871209201x",
                "130681198711209201",
        };
        //准备正则表达式(身份证有15位和18位两种),最后一位可能为字母
        String regex="(\\d{14}\\w)|\\d{17}\\w";
        //准备开始匹配,判断所有输入是否正确
        Pattern regular=Pattern.compile(regex);//创建匹配的规则Pattern
        StringBuilder sb=new StringBuilder();
        //遍历所有要匹配的字符串
        for(int i=0;i<str.length;i++){
            Matcher matcher=regular.matcher(str[i]);
            sb.append("身份证:");
            sb.append(str[i]);
            sb.append("匹配:");
            sb.append(matcher.matches());
            System.out.println(sb.toString());
            sb.delete(0, sb.length());
        }
        getBirthDay(str);
    }
    private static void getBirthDay(String[] str){
        System.out.println("准备开始获取出生日期:");
        //准备验证规则
        Pattern BirthDayRegular=Pattern.compile("(\\d{6})(\\d{8})(.*)");
        //.*连在一起的意思  任意数量的不包含换行的字符
        Pattern YearMonthDayRegular=Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");
        for(int i=0;i<str.length;i++){
            Matcher matcher=BirthDayRegular.matcher(str[i]);
            if(matcher.matches()){
                Matcher matcher2=YearMonthDayRegular.matcher(matcher.group(2));
                if(matcher2.matches()){
                    System.out.println(str[i]+"中的出生年份分解为"+matcher2.group(1)
                    +"年"+matcher2.group(2)+"月"+matcher2.group(3));
                }
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    testID_Card();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值