金融案有個識別客戶類型的公用程式,什麼類型就得回覆相應編碼,如下:
那麼在Java怎麼寫?
// ID Type的正規表達式
private static Map<String, String> IdTypeRegex = new HashMap<String, String>(){{
put("[A-Z][0-7][0-9]{8}", "11"); // 本國自然人
put("[A-Z][8-9A-Z][0-9]{8}", "12"); // 外國自然人
put("[0-9]{8}[A-Z]{2}","13"); // 境外自然人
put("[0-9]{7}([0-9]{3})?", "19"); // 內政部配賦統一證號 (旅行證10碼,居留證7碼)
put("[0-9]{6}([0-9]{2}| [0-9])", "21"); // 本國法人
put("[A-Z]{4}[0-9]{4}", "22"); // 境外法人虛擬統編, OBU法人(聯徵中心編配)
put("[A-Z]{6}(?:[0-9A-Z]{5}|[0-9A-Z]{2})", "23"); // 金融同業(SWIFT CODE)
put("[0-9]{3}[A-Z]{2}[0-9]{3}", "29"); // 境外法人(免送聯徵), OBU法人(本行編配)
put("GRP[0-9]{8}", "31"); // 集團戶(企金徵審系統編配)
put("88(?:[A-Z]{8,9}|[A-Z]{6})", "32"); // 信用狀/市庫
}};
// 判斷符合哪個ID Type Pattern,若全不符合回傳null
public static String checkIDType(String custID) {
for (Map.Entry<String, String> entry : IdTypeRegex.entrySet()) {
if (custID.toUpperCase().matches(entry.getKey()))
return entry.getValue();
}
return null;
}