|
|
@ -35,14 +35,14 @@ public class IdCardNoValidatorUtils { |
|
|
|
try { |
|
|
|
//判断号码的长度 15位或18位
|
|
|
|
if (idCardNo.length() != 15 && idCardNo.length() != 18) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证号码长度应该为15位或18位")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证号码长度应该为15位或18位")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (idCardNo.length() == 18) { |
|
|
|
String lastStr = idCardNo.substring(idCardNo.length() - 1); |
|
|
|
if (!Character.isDigit(lastStr.charAt(0))) { |
|
|
|
if (Character.isLowerCase(lastStr.charAt(0))) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "18身份证号最后一位字母需要大写")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "18身份证号最后一位字母需要大写")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} else { |
|
|
@ -55,7 +55,7 @@ public class IdCardNoValidatorUtils { |
|
|
|
iDCardNo = idCardNo.substring(0, 6) + "19" + idCardNo.substring(6, 15); |
|
|
|
} |
|
|
|
if (isStrNum(iDCardNo) == false) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证15位号码都应为数字;18位号码除最后一位外,都应为数字")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证15位号码都应为数字;18位号码除最后一位外,都应为数字")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
//判断出生年月
|
|
|
@ -63,27 +63,27 @@ public class IdCardNoValidatorUtils { |
|
|
|
String strMonth = iDCardNo.substring(10, 12);// 月份
|
|
|
|
String strDay = iDCardNo.substring(12, 14);// 月份
|
|
|
|
if (isStrDate(strYear + "-" + strMonth + "-" + strDay) == false) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日无效")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日无效")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
GregorianCalendar gc = new GregorianCalendar(); |
|
|
|
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150 || (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日不在有效范围")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日不在有效范围")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证月份无效")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证月份无效")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证日期无效")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证日期无效")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
//判断地区码
|
|
|
|
Hashtable h = GetAreaCode(); |
|
|
|
if (h.get(iDCardNo.substring(0, 2)) == null) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证地区编码错误")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证地区编码错误")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
//判断最后一位
|
|
|
@ -96,12 +96,12 @@ public class IdCardNoValidatorUtils { |
|
|
|
iDCardNo = iDCardNo + strVerifyCode; |
|
|
|
|
|
|
|
if (idCardNo.length() == 18 && !iDCardNo.equals(idCardNo)) { |
|
|
|
logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证无效,不是合法的身份证号码")); |
|
|
|
logger.warn(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证无效,不是合法的身份证号码")); |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(String.format("校验身份证号方法异常")); |
|
|
|
logger.warn(String.format("校验身份证号方法异常")); |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
return true; |
|
|
|