自定义字符串校验器 ExcelValidator.java

自定义字符串校验器 ExcelValidator.java

简介

  • 字符串校验器。开发excel批量处理数据时开发使用,快速校验读取出的每一个单元格数据是否符合预定格式;

api

  • 目标字符串是目标数组中的一个 checkContains(String[] array);
  • 限制字符串的最大长度 checkMaxLength(Long max);
  • 非空验证 checkEmpty();
  • 金额校验:最大金额校验 checkMaxMoney(Long max);
  • 金额校验:最小金额校验 checkMinMoney(Long min);
  • 纯数字的字符串校验 checkStrNumber();
  • 金额校验:两位小数的字符串 checkMoneyNumber();
  • 字母汉字组合的字符串 checkStrName();
  • 联系电话格式验证 checkTel();
  • 日期格式校验 checkDate(String pattern)
  • 自定义正则表达式 checkPattern(String pattern);

源码

  • package kkUtils.poi;
     
    /**
     * @说明:常用正则表达式
     */
    public class ExcelValidatorPattern  {
    	
    	//------------------ 整数 ---------------------------//
    	/** 0~99的整数 */
    	public static final String NUMBER_1 = "^0|[1-9][0-9]?$";
    	/** 0~99999的整数 */
    	public static final String NUMBER_2 = "^0|[1-9][0-9]{0,4}$";
    	
    	
    	//------------------ 小数 ---------------------------//
    	/** 10位整数或2位小数 */
    	public static final String FLOAT_NUMBER_1 = "^0|[1-9][0-9]{0,9}(\\.[0-9]{1,2})?$";
    	/** 整数或2位小数 */
    	public static final String FLOAT_NUMBER_2 = "^(([1-9]{1}\\d*)|(0{1}))(\\.\\d{1,2})?$";
    	
    	
    	//------------------ 字符串 ---------------------------//
    	/** 汉字、字母、数字、下划线 */
    	public static final String STR_1 = "^[\u4E00-\u9FA5A-Za-z0-9_]+$";
    	/** 汉字、字母 */
    	public static final String STR_2 = "[A-Za-z\u4e00-\u9fa5]+$";
    	/** 纯数字的字符串 */
    	public static final String STR_3 = "[0-9]+";
     
    	
    	//------------------ 常用规则串 ---------------------------//
    	/**
    	 * 支持格式示例-固话:+86-010-40020020,010-40020020    国家代码选填
    	 * 手机:+86-10-13523458056,  +86-13523458056 ,10-13523458056 ,13523458056  国家代码和区号选填
    	 */
    	public static final String TEL = "^(((\\+\\d{2}-)?0\\d{2,3}-\\d{7,8})|((\\+\\d{2}-)?(\\d{2,3}-)?([1][3,4,5,7,8][0-9]\\d{8})))$";
    	
    	/** 身份证号校验 */
    	public static final String IDCARD = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)";
    	
    	/** 邮箱校验 */
    	public static final String MAIL = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
    	
    	/** 域名校验 */
    	public static final String DOMAIN = "[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\.?";
    	
    	/** IP地址校验 */
    	public static final String IP = "((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))";
    	
    	/** 邮政编码校验 */
    	public static final String POSTCODE = "[1-9]\\d{5}(?!\\d)";
    	
    	
    }
    
  • package kkUtils.poi;
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    /**
     * @说明:校验器
     */
    public class ExcelValidator extends ExcelValidatorPattern {
    	
    	public static void main(String[] args) {
    		System.out.println(new ExcelValidator("231", "课程金额").checkEmpty().checkMaxMoney(123l));
    	}
    	
    	
    	/**
    	 * 方法功能说明:@1.目标字符串是目标数组中的一个
    	 */
    	public ExcelValidator checkContains(String[] array) {
    		boolean flag = false;
    		if (result) {
    			String str = String.valueOf(this.target);
    			for (String tar : array) {
    				if (str.trim().equals(tar)) {
    					flag = true;
    					break;
    				}
    			}
    			if (!flag) {
    				setValue(false, text+"数据格式不正确;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.限制字符串的最大长度
    	 */
    	public ExcelValidator checkMaxLength(Long max) {
    		if (result) {
    			String str = String.valueOf(this.target);
    			if (str.length() > max) {
    				setValue(false, text+"不能超过"+max+"个字符长度;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.非空验证
    	 */
    	public ExcelValidator checkEmpty() {
    		if (result) {
    			String str = String.valueOf(this.target);
    			if (null == str || "".equals(str.trim()) || "null".equals(str.trim())) {
    				setValue(false, text+"不能为空;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.金额校验:最小金额校验
    	 */
    	public ExcelValidator checkMinMoney(Long min){
    		if (result) {
    			String str = String.valueOf(this.target);
    			if (Double.valueOf(str)<=min) {
    				setValue(false, text+"必须大于"+min+";");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.金额校验:最大金额校验
    	 */
    	public ExcelValidator checkMaxMoney(Long max){
    		if (result) {
    			String str = String.valueOf(this.target);
    			if (Double.valueOf(str) >= max) {
    				setValue(false, text+"必须小于"+max+";");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	
    	/** =========== 常用的正则表达式 ============ */
    	
    	/**
    	 * 方法功能说明:@1.纯数字的字符串校验
    	 */
    	public ExcelValidator checkStrNumber() {
    		if (result) {
    			String str = String.valueOf(this.target);
    			Pattern pattern = Pattern.compile("[0-9]+");
    			Matcher isNum = pattern.matcher(str);
    			if(!isNum.matches()){
    				setValue(false, text+"格式错误;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.金额校验:两位小数的字符串
    	 */
    	public ExcelValidator checkMoneyNumber(){
    		if (result) {
    			String str = String.valueOf(this.target);
    			Pattern pattern = Pattern.compile("^(([1-9]{1}\\d*)|(0{1}))(\\.\\d{1,2})?$");
    			Matcher isNum = pattern.matcher(str);
    			if(!isNum.matches()){
    				setValue(false, text+"格式错误;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 方法功能说明:@1.字母汉字组合的字符串
    	 */
    	public ExcelValidator checkStrName(){
    		if (result) {
    			String str = String.valueOf(this.target);
    			Pattern pattern = Pattern.compile("[A-Za-z\u4e00-\u9fa5]+$");
    			Matcher isNum = pattern.matcher(str);
    			if(!isNum.matches()){
    				setValue(false, text+"必须是字母或汉字;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	/**
    	 * 联系电话格式验证
    	 * 支持格式示例-固话:+86-010-40020020,010-40020020    国家代码选填
    	 * 手机:+86-10-13523458056,  +86-13523458056 ,10-13523458056 ,13523458056  国家代码和区号选填
    	 */
    	public ExcelValidator checkTel(){
    		if (result) {
    			String str = String.valueOf(this.target);
    			Pattern pattern = Pattern.compile("^(((\\+\\d{2}-)?0\\d{2,3}-\\d{7,8})|((\\+\\d{2}-)?(\\d{2,3}-)?([1][3,4,5,7,8][0-9]\\d{8})))$");
    			Matcher isNum = pattern.matcher(str);
    			if(!isNum.matches()){
    				setValue(false, text+"格式错误;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
     
    	/**
    	 * 方法功能说明:@1.日期格式校验
    	 * 缺陷:1、非闰年也可以输入02-29号; 2、日期必须是1000年之后的
    	 */
    	public ExcelValidator checkDate(String pattern){
    		pattern = (pattern!=null && !"".equals(pattern))?pattern:"yyyy-MM-dd";
    		//==========确认正则的格式===============
    		String confirmPattern = "";
    		if ("yyyyMMdd".equals(pattern)) {
    			confirmPattern = "^([1-9][0-9]{3})((((0[13578])|(1[02]))((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|(11))((0[1-9])|([12][0-9])|(30)))|((02)(([01][1-9])|(2[0-9]))))$";
    		} else if ("yyyy-MM-dd".equals(pattern)) {
    			confirmPattern = "^([1-9][0-9]{3})-((((0[13578])|(1[02]))-((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|(11))-((0[1-9])|([12][0-9])|(30)))|((02)-(([01][1-9])|(2[0-9]))))$";
    		}
    		if (result) {
    			String str = String.valueOf(this.target);
    			Pattern pattern1 = Pattern.compile(confirmPattern);
    			Matcher isDate = pattern1.matcher(str);
    			if(!isDate.matches()){
    				setValue(false, text+"格式错误;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
        /**
    	 * 方法功能说明:@1.自定义正则表达式
    	 */
    	public ExcelValidator checkPattern(String pattern) {
    		if (result) {
    			String str = String.valueOf(this.target);
    			if(isEmpty(str)) { return new ExcelValidator(result, errorMsg, target, text); }
    			
    			Pattern pattern1 = Pattern.compile(pattern);
    			Matcher isPattern = pattern1.matcher(str);
    			if(!isPattern.matches()){
    				setValue(false, text+"格式错误;");
    			}
    		}
    		return new ExcelValidator(result, errorMsg, target, text);
    	}
    	
    	
    	
    	//=========== 成员对象 和 构造方法 ============
    	private boolean result = true;
    	
    	private String errorMsg;
    	
    	/**
    	 * 被验证的对象
    	 */
    	private Object target;
    	/**
    	 * 被验证对象的注释
    	 */
    	private String text;
    	
    	public boolean getResult() {
    		return result;
    	}
     
    	public String getErrorMsg() {
    		return errorMsg;
    	}
     
    	/**
    	 * 方法功能说明:@1.赋值
    	 */
    	public void setValue(boolean result, String errorMsg){
    		this.result = result;
    		this.errorMsg = errorMsg;
    	}
    	
    	public ExcelValidator(Object target, String text) {
    		this.target = target;
    		this.text = text;
    	}
    	
    	public ExcelValidator(boolean result, String errorMsg, Object target, String text) {
    		this.result = result;
    		this.errorMsg = errorMsg;
    		this.target = target;
    		this.text = text;
    	}
     
    	@Override
    	public String toString() {
    		return "ExcelValidator [result=" + result + ", errorMsg=" + errorMsg + "]";
    	}
    	
    }
    

你可能感兴趣的:(软件,JAVA基础工作中实际总结,编程学习,java,开发语言)