思路:身份證號是由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; }