java后台表單驗證工具類


/**
 * 描述  java后台表單驗證工具類
 *
 * @ClassName ValidationUtil
 * @Author wzf
 * @DATE 2018/10/27 15:21
 * @VerSion 1.0
 */
public class ValidationUtil {

    //手機號
    public static String mobile = "^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d{8}$";

    //不允許為空
    public static String blank = ".*[^ ].*";

    //郵件
    public static String email = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([0-9a-z_\\-]*)(\\.(com|cn|inc|org|cc|edu|de)*){1,2}([a-z]{2})?$";

    //QQ,允許為空
    public static String tencentQQAllowNull = "((^$)|([1-9][0-9]{4,11}))";

    //QQ
    public static String tencentQQ = "[1-9][0-9]{4,11}";

    //網址,允許為空
    public static String urlAllowNull = "((^$)|(http|https)+://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?)";

    //網址
    public static String url = "(http|https)+://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";

    //微信,允許為空
    public static String weixinAllowNull = "((^$)|(^[A-Za-z0-9]\\w{3,60}+$))";

    //微信
    public static String weixin = "^[A-Za-z0-9]\\w{3,60}+$";

    //正整數
    public static String PositiveInteger = "^[0-9]*[1-9][0-9]*$";

    //年份正則表達式
    public static String YearReg = "([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})";

    //正整數或非負數
    public static String NonnegativeNumber = "^(\\+?[1-9][0-9]*$)|(([0-9]+\\.[0-9]*[0-9][0-9]*))";

    //不允許有任何空白
    public static String NoAnyEmpty = "^[\\S]{5,30}$";

    //日期
    public static String DateReg = "^$|^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";

    //字符串長度 1到200  ValidationUtil.validata("xxxxx",StringLength);
    public static String StringLength = "/^\\S{1,100}$/";
    /*
     * @Description 身份證號碼驗證
     *
     * @Author wzf
     * @Date 2018/10/31 10:59
     * @Param [text]
     * @return boolean
     * 示例:
     *  Map valiTitleMap = ValidationUtil.isIdCardNo(xxxxx.getIdCardNo());//對身份證進行驗證
     *       if(!(boolean)valiTitleMap.get("isOK")){
     *           return valiTitleMap;
     *       }
     **/
    public  static Map isIdCardNo(String cardId){
        Map error=new HashMap();
        if (cardId.length() == 15 || cardId.length() == 18) {
            if (!ValidationUtil.cardCodeVerifySimple(cardId)) {
                error.put("msg", "15位或18位身份證號碼不正確");
                error.put("code","500");
                error.put("isOK",false);
                return error;
            } else {
                if (cardId.length() == 18 && !ValidationUtil.cardCodeVerify(cardId)) {
                    error.put("msg", "18位身份證號碼不符合國家規范");
                    error.put("code","500");
                    error.put("isOK",false);
                    return error;
                }
            }
        } else {
            error.put("msg", "身份證號碼長度必須等於15或18位");
            error.put("code","500");
            error.put("isOK",false);
            return error;
        }
        error.put("isOK",true);
        return error;
    }

    //是否是Double數字類型
    public static boolean isDouble(String value) {
        if (value == null) {
            return false;
        }
        Pattern pattern = Pattern.compile("[0-9]*(\\.?)[0-9]*");
        return pattern.matcher(value).matches();
    }

    //是否是Long類型
    public static boolean isValidLong(String str) {
        try {
            Long.parseLong(str);
            return true;
        } catch (NumberFormatException e) {
        }
        return false;
    }

    //是否是Int類型
    public static boolean isValidInt(String str) {
        try {
            Integer.parseInt(str);
            return true;
        } catch (NumberFormatException e) {
        }
        return false;
    }

    public static boolean mobile(String str) {
        return validata(str, mobile);
    }

    public static boolean blank(String str) {
        return validata(str, blank);
    }

    /****
     * 不為空,限制長度范圍
     * @param str
     * @param start
     * @param end
     * @return
     */
    public static boolean blankforlenth(String str, int start, int end) {
        String reg = "\\S{" + start + "," + end + "}";
        return validata(str, reg);
    }

    /***
     * 非負數
     * @param str
     * @return
     */
    public static boolean nonnegativeNumber(String str) {
        return validata(str, NonnegativeNumber);
    }

    /****
     * 不允許有任何空白
     * @param str
     * @return
     */
    public static boolean noAnyEmpty(String str) {
        return validata(str, NoAnyEmpty);
    }

    /***
     * 日期判斷
     * @param str
     * @return
     */
    public static boolean isDateReg(String str) {
        return validata(str, DateReg);
    }

    public static boolean eimail(String str) {
        return validata(str, email);
    }

    public static boolean tencentQQAllNull(String str) {
        return validata(str, tencentQQAllowNull);
    }

    public static boolean tencentQQ(String str) {
        return validata(str, tencentQQ);
    }

    public static boolean webURLAllowNull(String str) {
        return validata(str, urlAllowNull);
    }

    public static boolean webURL(String str) {
        return validata(str, url);
    }

    public static boolean weixinAllowNull(String str) {
        return validata(str, weixinAllowNull);
    }

    public static boolean weixin(String str) {
        return validata(str, weixin);
    }

    public static boolean positiveInteger(String str) {
        return validata(str, PositiveInteger);
    }

    public static boolean isyear(String str) {
        return validata(str, YearReg);
    }

    public static boolean validata(String str, String type) {
        Pattern p = Pattern.compile(type);//將給定的正則表達式編譯到模式中。

        Matcher m = p.matcher(str);//創建匹配給定輸入與此模式的匹配器。
        return m.matches();//嘗試將整個區域與模式匹配。
    }

    /*
     * @Description 對String 字符串長度進行驗證並返回提示信息
     *
     * @Author wzf
     * @Date 2018/10/27 16:14
     * @Param
     * @return ValidationUtil.valiStrLength("xxxx",10000,"字段長度不能超過10000請核對后提交");
     * 示例:
     *    Map valiTitleMap = ValidationUtil.valiStrLength(xxxxx.getName(),30, "名稱輸入不能超過30位請核對后訪問提交");
     *       if(!(boolean)valiTitleMap.get("isOK")){
     *           return valiTitleMap;
     *       }
     **/
    public static Map valiStrLength(String str, Integer strLength, String msg) {
        Map map = new HashMap();
        if (null != str && !"".equals(str)) {
            if (str.length() > strLength) {
                map.put("code", "500");
                map.put("msg", msg);
                map.put("isOK",false);
                return map;
            }
            map.put("isOK",true);
            return map;
        }
        map.put("isOK",true);
        return map;
    }
    /*
     * @Description 正則校驗身份證是否符合第一代第二代標准
     *
     * @Author wzf
     * @Date 2018/10/31 11:47
     * @Param [cardcode]
     * @return boolean
     **/
    public static boolean cardCodeVerifySimple(String cardcode) {
        //第一代身份證正則表達式(15位)
        String isIDCard1 = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$";
        //第二代身份證正則表達式(18位)
        String isIDCard2 ="^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[A-Z])$";

        //驗證身份證
        if (cardcode.matches(isIDCard1) || cardcode.matches(isIDCard2)) {
            return true;
        }
        return false;
    }
    /*
     * @Description  驗證第二代身份證是否符合國家規范
     *
     * @Author wzf
     * @Date 2018/10/31 11:47
     * @Param [cardcode]
     * @return boolean
     **/
    public static boolean cardCodeVerify(String cardcode) {
        int i = 0;
        String r = "error";
        String lastnumber = "";

        i += Integer.parseInt(cardcode.substring(0, 1)) * 7;
        i += Integer.parseInt(cardcode.substring(1, 2)) * 9;
        i += Integer.parseInt(cardcode.substring(2, 3)) * 10;
        i += Integer.parseInt(cardcode.substring(3, 4)) * 5;
        i += Integer.parseInt(cardcode.substring(4, 5)) * 8;
        i += Integer.parseInt(cardcode.substring(5, 6)) * 4;
        i += Integer.parseInt(cardcode.substring(6, 7)) * 2;
        i += Integer.parseInt(cardcode.substring(7, 8)) * 1;
        i += Integer.parseInt(cardcode.substring(8, 9)) * 6;
        i += Integer.parseInt(cardcode.substring(9, 10)) * 3;
        i += Integer.parseInt(cardcode.substring(10,11)) * 7;
        i += Integer.parseInt(cardcode.substring(11,12)) * 9;
        i += Integer.parseInt(cardcode.substring(12,13)) * 10;
        i += Integer.parseInt(cardcode.substring(13,14)) * 5;
        i += Integer.parseInt(cardcode.substring(14,15)) * 8;
        i += Integer.parseInt(cardcode.substring(15,16)) * 4;
        i += Integer.parseInt(cardcode.substring(16,17)) * 2;
        i = i % 11;
        lastnumber =cardcode.substring(17,18);
        if (i == 0) {
            r = "1";
        }
        if (i == 1) {
            r = "0";
        }
        if (i == 2) {
            r = "x";
        }
        if (i == 3) {
            r = "9";
        }
        if (i == 4) {
            r = "8";
        }
        if (i == 5) {
            r = "7";
        }
        if (i == 6) {
            r = "6";
        }
        if (i == 7) {
            r = "5";
        }
        if (i == 8) {
            r = "4";
        }
        if (i == 9) {
            r = "3";
        }
        if (i == 10) {
            r = "2";
        }
        if (r.equals(lastnumber.toLowerCase())) {
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        String xxx = "xxxxx";
        System.out.println(blankforlenth(xxx,5, 10));
    }
}

 

 另外可參考:https://blog.csdn.net/wiker_yong/article/details/17040485


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM