*/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...