經常使用校驗

package simple.base.utils.validate;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import simple.base.utils.IdCardSimple;

/**
 * 校驗類公共方法
 * 
 * @author __ 2014-1-15
 */
public class ValidateSimple {
    /********************************* 經常使用正則表達式代碼 ********************/
    /**
     * 經常使用正則表達式代碼提供 驗證數字:^[0-9]*$ 驗證n位的數字:^\d{n}$ 驗證至少n位數字:^\d{n,}$
     * 驗證m-n位的數字:^\d{m,n}$ 驗證零和非零開頭的數字:^(0|[1-9][0-9]*)$
     * 驗證有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$ 驗證有1-3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
     * 驗證非零的正整數:^\+?[1-9][0-9]*$ 驗證非零的負整數:^\-[1-9][0-9]*$ 驗證非負整數(正整數 + 0) ^\d+$
     * 驗證非正整數(負整數 + 0) ^((-\d+)|(0+))$ 驗證長度爲3的字符:^.{3}$
     * 驗證由26個英文字母組成的字符串:^[A-Za-z]+$ 驗證由26個大寫英文字母組成的字符串:^[A-Z]+$
     * 驗證由26個小寫英文字母組成的字符串:^[a-z]+$ 驗證由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
     * 驗證由數字、26個英文字母或者下劃線組成的字符串:^\w+$ 驗證用戶密碼:^[a-zA-Z]\w{5,17}$
     * 正確格式爲:以字母開頭,長度在6-18之間,只能包含字符、數字和下劃線。 驗證是否含有 ^%&',;=?$\"
     * 等字符:[^%&',;=?$\x22]+ 驗證漢字:^[\u4E00-\u9FA5\uF900-\uFA2D]+$
     * 驗證Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
     * 驗證InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
     * ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
     * 驗證手機號碼:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正確格式爲:XXXX-XXXXXXX,XXXX-
     * XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
     * 驗證身份證號(15位或18位數字):^\d{15}|\d{}18$ 驗證一年的12個月:^(0?[1-9]|1[0-2])$
     * 正確格式爲:「01」-「09」和「1」「12」 驗證一個月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$
     * 正確格式爲:0一、09和一、31。 整數:^-?\d+$ 非負浮點數(正浮點數 + 0):^\d+(\.\d+)?$ 正浮點數
     * ^(([0-9]+\
     * .[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
     * 非正浮點數(負浮點數 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 負浮點數
     * ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮點數
     * ^(-?\d+)(\.\d+)?$
     */

    /**
     * /** 功能:校驗是否爲手機號碼
     * 
     * @param Mobile
     *            手機號碼
     * @return boolean 校驗結果
     */
    public static boolean checkMobile(String Mobile) {
        String regExp = "^(1[3|5|8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])$";
        Pattern p = Pattern.compile(regExp);
        Matcher m = p.matcher(Mobile);
        return m.find();// boolean
    }

    /**
     * 功能:判斷字符串是否爲日期格式
     * 
     * @param strDate
     *            須要校驗的字符串
     * @return boolean 校驗結果
     */
    public static boolean checkDate(String strDate) {
        Pattern pattern = Pattern
                .compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
        Matcher m = pattern.matcher(strDate);
        if (m.matches()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 功能:身份證校驗
     * 
     * @param str
     *            須要校驗的字符串
     * @return boolean 校驗結果
     */
    public static boolean checkIDCard(String str) {
        return IdCardSimple.getInstance().verify(str);
    }

    /**
     * 功能:驗證郵箱地址是否正確
     * 
     * @param email
     *            須要校驗的字符串
     * @return boolean 校驗結果
     */
    public static boolean checkEmail(String email) {
        boolean flag = false;
        try {
            String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
            Pattern regex = Pattern.compile(check);
            Matcher matcher = regex.matcher(email);
            flag = matcher.matches();
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }

    /**
     * 功能:驗證是否全爲中文
     * 
     * @param str
     *            須要校驗的字符串
     * @return boolean 校驗結果
     */
    public static boolean checkChinese(String str) {
        boolean result = true;
        for (int i = 0; i < str.length(); i++) {
            String temp = str.substring(i, i + 1);
            boolean tempRes = java.util.regex.Pattern.matches("[\u4E00-\u9FA5]", temp);
            if (!tempRes) {
                result = false;
                break;
            }
        }
        return result;
    }

    /**
     * 功能:驗證對象是否爲null
     * 
     * @param obj
     *            須要校驗的對象
     * @return boolean 校驗結果
     */
    public static boolean checkIsNull(Object obj) {
        return obj == null;
    }

    
    /**
     * 判斷是否全爲數字
     * @param inputStr
     * @return
     */
    public static boolean isAllNumeric(String inputStr){
        return  inputStr==null?false: inputStr.matches("\\d+");
    }
    
    /**
     * 判斷是否全爲字母
     * @param inputStr
     * @return
     */
    public static boolean isAllLetter(String inputStr){
        return  inputStr==null?false:  inputStr.matches("[A-Za-z]+");
    }
    
    /**
     * 正則表達式判斷字符串是否全是中文漢字
     *
     * @param strInput
     * @return
     */
    public static boolean isAllChinese(String strInput) {
        if (strInput != null && !strInput.trim().equalsIgnoreCase("")) {
            // 此正則表達式用來判斷是否爲中文(\\u4E00-\\u9FA5\\uF900-\\uFA2D是指漢字的Unicode編碼範圍 )
            Pattern pattern = Pattern.compile("[\u4E00-\u9FA5\uF900-\uFA2D]+");
            Matcher matcher = pattern.matcher(strInput);
            if (matcher.matches()) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
    
    /**
     * 正則表達式判斷字符串是否含有中文漢字
     *
     * @param strInput
     * @return
     */
    public static boolean isHaveChinese(String strInput) {
        if (strInput != null && !strInput.trim().equalsIgnoreCase("")) {
            for (int i = 0; i < strInput.length(); i++) {
                char ss = strInput.charAt(i);
                boolean s = String.valueOf(ss).matches("[\u4E00-\u9FA5\uF900-\uFA2D]");
                if (s) {
                    return true;
                }
            }
            return false;
        } else {
            return false;
        }
    }
    
    /**
     * 正則表達式判斷字符串是否知足中文、大小寫字母、數字、下劃線和長度限制
     *
     * @param strInput
     *            字符串
     * @param intMax
     *            字符串的設定長度
     * @return
     */
    public static boolean isStringOK(String strInput, int intMax) {
        /** 此正則表達式將上面兩者結合起來進行判斷,中文、大小寫字母和數字,{2,10}字符的長度爲2-10 **/
        if (strInput != null && !strInput.trim().equalsIgnoreCase("")) {
            String Regular = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w]{2," + intMax + "}$";
            Pattern pattern = Pattern.compile(Regular, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(strInput);
            if (matcher.matches()) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
    
}
相關文章
相關標籤/搜索