import java.util.ArrayList; import java.util.List; import org.springframework.util.Assert; /** * 校驗工具類 * */ public abstract class ValidateUtil { /** 用戶名正則 */ private static final String REG_USERNAME = "^[a-zA-Z]\\w{3,31}"; /** Email 正則 */ private static final String REG_EMAIL = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; /** * 驗證必填項,若是不經過,返回List【錯誤描述信息】 * * @param dataObj 校驗對象 * @param propNames 校驗屬性【數組】 * @param displayNames 屬性對應的【中文名稱】 * @return errorList 錯誤集合,每條數據表示一個屬性的錯誤描述信息 */ public static List<String> validateMust(Object dataObj, String[] propNames, String[] displayNames) { Assert.isTrue(propNames.length == displayNames.length, "參數名與顯示名的個數不一致"); List<String> errorList = new ArrayList<String>(); for (int i = 0; i < propNames.length; i++) { String propName = propNames[i]; String displayName = displayNames[i]; Object value = ReflectUtil.getProperty(dataObj, propName); if (null == value) { errorList.add(displayName + "(" + propName + ")是必填項"); } else { if (value instanceof String) { // 處理全角空格 String valueStr = value.toString().replace(" ", "").trim(); if (valueStr.length() == 0) { errorList.add(displayName + "(" + propName + ")是必填項"); } } } } return errorList; } /** * * 校驗郵箱 * * @param email * @return boolean */ public static boolean validateEmail(String email) { if (null == email || email.trim().length() == 0) { return false; } return email.matches(REG_EMAIL); } /** * * 校驗用戶名 * * @param * @return boolean */ public static boolean validateUserName(String userName) { return validateByRegex(userName, REG_USERNAME); } /** * 按指定正則表達式驗證 * @param input 輸入字符 * @param regex 正則 * @return 成立與否 */ private static boolean validateByRegex(String input, String regex) { if (null == input || input.trim().length() == 0) { return false; } return input.matches(regex); } }