Java的身份證號碼工具類

2021-09-01 05:21:22 字數 4202 閱讀 8314

*/public static string validateidcard10(string idcard)

if (idcard.matches("^[a-za-z][0-9]$")) else if (char2.equals("2")) else

info[2] = validatetwcard(idcard) ? "true" : "false";

} else if (idcard.matches("^[1|5|7][0-9]\\(?[0-9a-z]\\)?$")) else if (idcard.matches("^[a-z][0-9]\\(?[0-9a]\\)?$")) else

return info;

}/**

* 驗證台灣身份證號碼

* * @param idcard

* 身份證號碼

* @return 驗證碼是否符合

*/public static boolean validatetwcard(string idcard)

return (sum % 10 == 0 ? 0 : (10 - sum % 10)) == integer.valueof(end) ? true : false;

}/**

* 驗證香港身份證號碼(存在bug,部份特殊身份證無法檢查)

* * 身份證前2位為英文本元,如果只出現乙個英文本元則表示第一位是空格,對應數字58 前2位英文本元a-z分別對應數字10-35

* 最後一位校驗碼為0-9的數字加上字元"a","a"代表10

* *

* 將身份證號碼全部轉換為數字,分別對應乘9-1相加的總和,整除11則證件號碼有效

* *

* @param idcard 身份證號碼

* @return 驗證碼是否符合

*/public static boolean validatehkcard(string idcard) else

string mid = card.substring(1, 7);

string end = card.substring(7, 8);

char chars = mid.tochararray();

integer iflag = 7;

for (char c : chars)

if (end.touppercase().equals("a")) else

return (sum % 11 == 0) ? true : false;

}/**

* 將字元陣列轉換成數字陣列

* * @param ca

* 字元陣列

* @return 數字陣列

*/public static int converchartoint(char ca)

} catch (numberformatexception e)

return iarr;

}/**

* 將身份證的每位和對應位的加權因子相乘之後,再得到和值

* * @param iarr

* @return 身份證編碼。

*/public static int getpowersum(int iarr) }}

}return isum;

}/**

* 將power和值與11取模獲得餘數進行校驗碼判斷

* * @param isum

* @return 校驗位

*/public static string getcheckcode18(int isum)

return scode;

}/**

* 根據身份編號獲取年齡

* * @param idcard

* 身份編號

* @return 年齡

*/public static int getagebyidcard(string idcard)

string year = idcard.substring(6, 10);

calendar cal = calendar.getinstance();

int icurryear = cal.get(calendar.year);

iage = icurryear - integer.valueof(year);

return iage;

}/**

* 根據身份編號獲取生日

* * @param idcard 身份編號

* @return 生日(yyyymmdd)

*/public static string getbirthbyidcard(string idcard) else if (len == china_id_min_length)

return idcard.substring(6, 14);

}/**

* 根據身份編號獲取生日年

* * @param idcard 身份編號

* @return 生日(yyyy)

*/public static short getyearbyidcard(string idcard) else if (len == china_id_min_length)

return short.valueof(idcard.substring(6, 10));

}/**

* 根據身份編號獲取生日月

* * @param idcard

* 身份編號

* @return 生日(mm)

*/public static short getmonthbyidcard(string idcard) else if (len == china_id_min_length)

return short.valueof(idcard.substring(10, 12));

}/**

* 根據身份編號獲取生日天

* * @param idcard

* 身份編號

* @return 生日(dd)

*/public static short getdatebyidcard(string idcard) else if (len == china_id_min_length)

return short.valueof(idcard.substring(12, 14));

}/**

* 根據身份編號獲取性別

* * @param idcard 身份編號

* @return 性別(m-男,f-女,n-未知)

*/public static string getgenderbyidcard(string idcard)

string scardnum = idcard.substring(16, 17);

if (integer.parseint(scardnum) % 2 != 0) else

return sgender;

}/**

* 根據身份編號獲取戶籍省份

* * @param idcard 身份編碼

* @return 省級編碼。

*/public static string getprovincebyidcard(string idcard)

sprovince = citycodes.get(sprovinnum);

return sprovince;

}/**

* 數字驗證

* * @param val

* @return 提取的數字。

*/public static boolean isnum(string val)

/*** 驗證小於當前日期 是否有效

* * @param iyear

* 待驗證日期(年)

* @param imonth

* 待驗證日期(月 1-12)

* @param idate

* 待驗證日期(日)

* @return 是否有效

*/public static boolean validate(int iyear, int imonth, int idate)

if (imonth < 1 || imonth > 12)

switch (imonth)

return (idate >= 1) && (idate <= datepermonth);}}

身份證號碼

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如 對於身份證號碼330719...

java驗證身份證號碼

介紹 yyyy mm dd 375 0 十八位 yy mm dd 75 0 十五位 地區 1 9 d 年的前兩位 18 19 23 d 1800 2399 年的後兩位 d 月份 0 1 9 10 11 12 天數 0 2 1 9 10 20 30 31 閏年不能禁止29 三位順序碼 d 兩位順序碼 ...

Java 身份證號碼驗證

之前的身份證號碼只是做了一些簡單的數字 長度,生日等驗證 最近碰到乙個框架的身份證號碼驗證有些奇怪,在網上搜了一通,終於找到了規則,所以在這裡記錄一下,一遍以後再用,也分享給廣大開發者.驗證身份證號碼 param snumber 身份證號碼 public static boolean check s...