字符串校验器 ExcelValidator.java

简介

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

api

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

源码

package kkUtils.poi;

/**
 * @公司名称:kk51
 * @作者:lud —— 2020年8月8日 下午11:06:00
 * @说明:常用正则表达式
 */
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;

/**
 * @公司名称:kk51
 * @作者:lud —— 2020年8月8日 下午11:06:00
 * @说明:校验器
 */
public class ExcelValidator extends ExcelValidatorPattern {
	
	public static void main(String[] args) {
		System.out.println(new ExcelValidator("231", "课程金额").checkEmpty().checkMaxMoney(123l));
	}
	
	
	/**
	 * 方法功能说明:@1.目标字符串是目标数组中的一个
	 * 创建时间:2020年8月8日 下午11:24:06 --lud
	 */
	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.限制字符串的最大长度
	 * 创建时间:2020年8月8日 下午11:24:06 --lud
	 */
	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.非空验证
	 * 创建时间:2020年8月8日 下午11:24:06 --lud
	 */
	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.金额校验:最小金额校验
	 * 创建时间:2020年8月24日 上午10:31:12 --lud
	 */
	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.金额校验:最大金额校验
	 * 创建时间:2020年8月24日 上午10:31:12 --lud
	 */
	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.纯数字的字符串校验
	 * 创建时间:2020年8月8日 下午11:24:06 --lud
	 */
	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.金额校验:两位小数的字符串
	 * 创建时间:2020年8月24日 上午10:31:01 --lud
	 */
	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.字母汉字组合的字符串
	 * 创建时间:2020年8月24日 上午10:36:47 --lud
	 */
	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  国家代码和区号选填
	 * 创建时间:2020年8月24日 上午10:36:47 --lud
	 */
	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.日期格式校验
	 * 创建时间:2020年9月9日 下午2:23:28 --lud
	 * 缺陷: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.自定义正则表达式
	 * 创建时间:2020年8月8日 下午11:24:06 --lud
	 */
	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.赋值
	 * 创建时间:2020年8月8日 下午11:13:26 --lud
	 */
	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 + "]";
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值