|  |  | @ -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; | 
			
		
	
	
		
			
				
					|  |  | 
 |