`
jessen163
  • 浏览: 465425 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

ValidateUtil

    博客分类:
  • Util
阅读更多
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.validator.GenericValidator;

/**
 * 
 * @version : 1.00
 * Create Time : 2011-2-22-下午04:31:36
 * Description : 
 *             内容校验类
 */
public class ValidateUtil implements Serializable{
	private static final long serialVersionUID = 1L;

	/**
	 * 默认编码格式
	 */
	private static final String DEFAULT_ENCODING = "UTF-8";
	
	/**
	 * Function  : 检查字符串的格式
	 * @param str           :  被检查的字符串
	 * @param hasCN         :  允许有中文
	 * @param hasNum        : 允许有数字
	 * @param hasLetter     : 允许有字母
	 * @param specialChars  :  允许有特殊字符,输入方式:假设允许下划线则参数为,"_"  假如允许下划线和问号则参数为,"_","?"
	 * example : 字母、数字、问号、句号和感叹号组成的字符串:isRealChar("xxxx",false,true,true,"?","。","!")
	 * @return   匹配则返回true,不匹配返回false
	 */
	public static boolean isRealChar(String str,boolean hasCN,boolean hasNum,boolean hasLetter,String... specialChars){
		String regex_start = "^[";
		String regex_end = "]+$";
		
		if(hasCN == true){
			regex_start = regex_start + "|\u4e00-\u9fa5";
		}else if(hasNum == true){
			regex_start = regex_start + "|0-9";
		}else if(hasLetter == true){
			regex_start = regex_start + "|a-zA-Z";
		}
		if(specialChars != null){
    		for(int i = 0;i<specialChars.length;i++){
    			regex_start = regex_start +"|"+specialChars[i];
    		}
    	}

		return match(regex_start+regex_end,str);
	}

	/**
	 * @param str
	 * @return
	 * about version :1.00
	 * create time   : 2011-2-22-下午04:37:22
	 * Description : 验证邮箱的有效性
	 *         成功匹配则返回true
	 *         不匹配则返回false           
	 */
    public static boolean isEmail(String str) 
    {
    	//return str.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+") ;
        String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午04:38:38
     * Description :验证IP地址
     *         匹配返回true
     *         不匹配返回false
     */
    public static boolean isIP(String str) 
    { 
        String num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)"; 
        String regex = "^" + num + "\\." + num + "\\." + num + "\\." + num + "$"; 
        return match(regex, str); 
    } 

    /**
     *  
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午04:47:59
     * Description : 校验网址(规则:以http://或https://开头)
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isUrl(String str)
    { 
        String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午04:49:46
     * Description :验证是否是固定电话(规则:xxxx(区号,3或4位)-(连接线,必备)xxxxxx(电话,6到8位),如028-83035137)
     *         匹配则返回true
     *         不匹配则返回false              
     */
    public static boolean isTelephone(String str) 
    { 
        String regex = "^(\\d{3,4}-)?\\d{6,8}$"; 
        return match(regex, str); 
    } 

    /**
     * @param value
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午04:51:00
     * Description : 验证是否是手机号(规则:以1开头,接任意数字,11位)
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isMobilePhone(String value)
    {
    	//String regex = "^[1]+[3,5]+\\d{9}$"; 
    	String regex = "^[1]+\\d{10}"; 
    	return value.matches(regex);
    } 
    
    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:01:02
     * Description :邮编地址
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isPostalcode(String str) 
    { 
        String regex = "^\\d{6}$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:03:46
     * Description :验证15位或18位身份证号
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isIDcard(String str) 
    { 
        String regex = "(^\\d{18}$)|(^\\d{15}$)"; 
        return match(regex, str); 
    } 

    /**
     * @param str     被验证数据
     * @param digit   验证长度:小数点后几位
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:12:03
     * Description : 验证是否符合指定位数的小数
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isDecimal(String str,int digit) 
    { 
        String regex = "^[0-9]+(.[0-9]{"+digit+"})?$"; 
        return match(regex, str); 
    } 

    
    /** 
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:18:49
     * Description :验证是否是1~12月
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isMonth(String str) 
    { 
        String regex = "^(0?[1-9]|1[0-2])$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:22:57
     * Description : 校验日期格式(格式:xxxx-xx-xx,并且考虑闰月、大小月的情况)
     *        匹配则返回true
     *        不匹配则返回false
     */
    public static boolean isDate(String str) 
    { 
        //严格验证时间格式的(匹配[2002-01-31], [1997-04-30], [2004-01-01])不匹配([2002-01-32], [2003-02-29], [04-01-01]) 
    	String regex = "^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"; 
        //没加时间验证的YYYY-MM-DD 
//      String regex = "^((((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-))$"; 
        //加了时间验证的YYYY-MM-DD 00:00:00 
//      String regex = "^((((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-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$"; 
        return match(regex, str); 
    } 

    /**
     * @param str     : 实际日期
     * @param format  :日期格式,如yyyy-MM-dd
     * @return
     * @throws ParseException
     * about version :1.00
     * create time   : 2011-2-22-下午05:46:37
     * Description : 判断是否是指定日期格式
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isDateFormat(String str, String format) throws ParseException {
        if (GenericValidator.isBlankOrNull(str) || GenericValidator.isBlankOrNull(format)) {
            return false;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setLenient(true);

        Date date = sdf.parse(str);
        String str2 = sdf.format(date);

        if (!str.equals(str2)) {
            return false;
        }else{
        	return true;
        }  
    }
    
    /**
     * @param str
     * @param sign  : 三种"+","-","all",分别表示正数、负数、正负都行
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:31:02
     * Description :校验指定类型的数字
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isNumber(String str,String sign) 
    {
    	String regex = "";
    	if("+".equals(sign)){
    		regex = "^[+]?[0-9]*$";
    	}else if("-".equals(sign)){
    		regex = "^[-][0-9]*$";
    	}else{
    		regex = "^[+-]?[0-9]*$";
    	}
        return match(regex, str);
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:36:04
     * Description :验证非0正整数
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isIntNumber(String str)
    { 
        String regex = "^\\+?[1-9][0-9]*$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:38:38
     * Description :验证大写字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isUpChar(String str) 
    { 
        String regex = "^[A-Z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:39:14
     * Description : 验证小写字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isLowChar(String str) 
    { 
        String regex = "^[a-z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午05:39:57
     * Description :验证输入的是字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isLetter(String str) 
    { 
        String regex = "^[A-Za-z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @param encoding : 编码格式,如GBK,   不输入默认为UTF-8
     * @return :返回指定编码格式下字符串的长度
     * about version :1.00
     * create time   : 2011-2-22-下午05:54:16
     * Description :选择不同编码,返回字符串长度
     */
    public static int checkLength(String str,String encoding) {
        int length;
        try {
        	if(encoding == null||"".equals(encoding)){
        		length = str.getBytes(DEFAULT_ENCODING).length;
        	}else{
        		length = str.getBytes(encoding).length;
        	}
        } catch (UnsupportedEncodingException e) {
            length = str.getBytes().length;
        }
        return length;
    }
    


    
    /**
     * @param regex
     * @param str
     * @return
     * about version :1.00
     * create time   : 2011-2-22-下午04:41:57
     * Description : 正则表达式验证方法
     *         匹配表达式则返回true
     *         不匹配则返回false
     */
    private static boolean match(String regex, String str)
    { 
        Pattern pattern = Pattern.compile(regex); 
        Matcher matcher = pattern.matcher(str); 
        return matcher.matches(); 
    }
}

分享到:
评论

相关推荐

    ValidateUtil字符串简单操作工具类

    字符串工具类

    ValidateUtil.java

    ValidateUtil.java

    ValidateUtil源码

    ValidateUtil源码

    用于在Java层验证数据的合法性

    1. 调用方法ValidateUtil.validate(String json,Map,String[]&gt; map,String suffix); 具体参数表示意思可查看代码里的注释 2. 类似JQuery的验证,传入的json字符串必须是符合Json规则的字符串如下格式: "{rules : {...

    计算机毕业设计-CRMEB-Java版商城系统-controller.zip

    同时,利用Hibernate Validator或Apache Commons Lang的ValidateUtil进行数据有效性验证,确保业务处理的正确性。 6. 异常处理:Controller层是处理异常的重要环节。开发者通常会定义全局的异常处理器,捕获并统一...

    ValidateUtils.java

    各种验证,包括数字、邮件、颜色、中英文、url、邮编、IP地址、图片、QQ、身份证、验证码、密码验证等。

    动态代理与反射

    例如,文件`javabean-validateUtil`可能是一个用于验证Java Bean属性值的工具类,它可能通过反射遍历Bean的所有字段,然后利用动态代理在setter方法上拦截并执行验证规则。 总的来说,动态代理和反射是Java强大且...

    C#公共类通用类非常齐全

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs...

    java后台注解校验工具类

    在上述代码中,`validateUtil.validate(new User())`将检查`User`实例的属性,如果存在任何违反注解的约束,将会打印出相应的错误信息。 此外,还可以使用Spring框架的`@Validated`注解在控制器层进行注解校验,...

    c# 公用操作类库源码

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助...

    DotNet通用类库大全

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助...

    WHC.OrderWater.Commons 伍华聪 公共类源码 类库 帮助文档

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助...

    C#公共通用类

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs...

    C#公共类源代码 带帮助文档

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助...

    WHC.OrderWater.Commons公共类源码_文档[最新整理]

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助...

    aspnet公共类cs文件.rar

    各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs...

    WHC第三方控件

    15. 各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- 1. Cookie操作辅助类(CookieManger.cs) 2. FTP操作辅助类(FTPHelper.cs) 3. HTML操作类(HttpHelper.cs) 4. 网页抓取帮助...

    DotNet公用类(超多附文档)

    15.各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- 1.Cookie操作辅助类(CookieManger.cs) 2.FTP操作辅助类(FTPHelper.cs) 3.HTML操作类(HttpHelper.cs) 4.网页抓取帮助...

    react-validation-utils:根据状态验证表单组件的React

    react-validation-utils该库不再维护它被替换为[instant-validation]( ) 根据状态验证表单组件的React。 所有的国家管理都处于幕后。 创建Validation类实例并描述字段。 const Validator = new Validation ( { ...

Global site tag (gtag.js) - Google Analytics