经常使用校验

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;
        }
    }
    
}
相关文章
相关标签/搜索