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; }