/**
* Java驗證身份證號是否合法
* @param idCard
* @return
*/
public boolean validateIdCard(String idCard) {
// 對身份證號進行長度等簡單判斷
if(StringUtils.isEmpty(idCard)
|| idCard.length() != 18
|| !idCard.matches("\\d{17}[0-9X]")
){
return false;
}
// 1-17位相乘因子數組
int[] w = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 計算1-17位與相應因子乘積之和
char[] c = idCard.toCharArray();
int sum = 0;
for (int i = 0; i < w.length; i++) {
sum += (c[i] - '0') * w[i];
}
// 18位隨機碼數組
char[] verifyCode = "10X98765432".toCharArray();
char ch = verifyCode[sum % 11];
// 判斷隨機碼是否相等
if(c[17] == ch){
return true;
}else{
return false;
}
}
Java驗證身份證號是否合法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.