java算法——通过身份证号获取出生的年月日

思路:身份证号是由15为的数字或者17位数字+一位数字/x/X组成的,正则表达式的写法就是匹配一个字符串是不是由15位数字组成或者是17位数字+一位数字/x/X组成的

正则表达式的写法:^(\d{15}|\d17[\dxX])$

输出的格式:yyyy-MM-dd

声明三个字符串变量分别用来存储yyyy、MM、dd,身份证的第7位到第14位是出生的年月日,但在字符串中的下标是从0开始的,所以就需要从下标为6的地方开始取,

年:【6,10)

月:【10,12)

日:【12,14)

最后返回自己想要的格式

    /**
     * 省份证的正则表达式^(\d{15}|\d{17}[\dx])$
     * @param id    省份证号
     * @return    生日(yyyy-MM-dd)
     */
    public String extractYearMonthDayOfIdCard(String id) {
        String year = null;
        String month = null;
        String day = null;
         //正则匹配身份证号是否是正确的,15位或者17位数字+数字/x/X
        if (id.matches("^\\d{15}|\\d{17}[\\dxX]$")) {
            year = id.substring(6, 10);
            month = id.substring(10,12);
            day = id.substring(12,14);
        }else {
            System.out.println("身份证号码不匹配!");
            return null;
        }
        return year + "-" + month + "-" + day;
    }

 

 

posted on 2019-09-04 09:56  王佳俊  阅读(7972)  评论(0编辑  收藏  举报

导航