展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

验证数据工具类

import java.lang.reflect.Array;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 有效验证
 */
public final class ValidUtil {

	private ValidUtil() {
	}

	/**
	 * 
	 * 判断一个数据对象是否为空
	 * 
	 * @param data
	 * @return boolean
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isEmpty(Object data) {
		if (null == data)
			return true;
		if (data instanceof String) {
			if(String.valueOf(data).trim().isEmpty()) {
				return true;
			}else if("undefined".equals(String.valueOf(data))){
				return true;
			}else if("null".equals(String.valueOf(data))){
				return true;
			}
		} else if (data instanceof Map) {
			return ((Map) data).isEmpty();
		} else if (data instanceof Collection) {
			Collection coll = (Collection) data;
			return coll.isEmpty();
		} else if (data.getClass().isArray()) {
			return Array.getLength(data) == 0;
		} else if (data instanceof Long) {
			Long l = (Long) data;
			return l == 0;
		}
		return false;
	}

	/**
	 * 判断一个数据对象不会空
	 * 
	 * @param data
	 * @return boolean
	 */
	public static boolean isNotEmpty(Object data) {
		return !isEmpty(data);
	}

	/**
	 * 验证手机号
	 * @param phone
	 * @return
	 */
	public static boolean isPhone(String phone) {
		String regex = "^((13[0-9])|(14[0-9])|(15([0-9]))|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d{8}$";
		if (isEmpty(phone) || phone.length() != 11) {
			return false;
		}
		return isValid(phone, regex);
	}

	/**
	 * 验证是否是邮箱地址
	 *
	 * @param text
	 * @return
	 */
	public static boolean isEmail(String text){
		String regex = "^[\\w-]+(.[\\w-]+)*@[\\w-]+(.[\\w-]+)+$";
		return isValid(text, regex);
	}

	/**
	 * 是否是int类型的数字
	 * 
	 * @param text
	 * @return boolean
	 */
	public static boolean isInt(String text) {
		return isNotEmpty(text) && isValid(text,"[0-9]*");
	}

	/**
	 * 是否正负数,小数
	 *
	 * @param text
	 * @return
	 */
	public static boolean isNum(String text){
		return isNotEmpty(text) && isValid(text, "^[\\+\\-]?[\\d]+(\\.[\\d]+)?$");
	}

	/**
	 * 判断是否是日期格式字符串(yyyy-MM-dd HH:mm:ss)
	 *
	 * @param text
	 * @return
	 */
	public static boolean isDate(String text) {
		if(isEmpty(text))
			return false;
		String pattern = "yyyy-MM-dd HH:mm:ss";
		if(!isDate(text,pattern)){
			if(!isDateRexp(text)){
				return false;
			}
		}
		return true;
	}

	/**
	 * 判断是否是日期格式字符串(yyyy-MM-dd)
	 *
	 * @param date
	 * @return
	 */
	public static boolean isDateRexp(String date){
		String regex = "^((\\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]))))))";
		return isValid(date, regex);
	}

	/**
	 * 判断是否是指定的日期格式的字符串
	 *
	 * @param text
	 * @param pattern
	 * @return
	 */
	public static boolean isDate(String text, String pattern){
		try {
			DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
			LocalDateTime.parse(text, dtf);
			return true;
		}catch (Exception e){
			return false;
		}
	}

	/**
	 * 检查密码是否强壮
	 *
	 * @param password
	 * @return
	 */
	public static boolean isStrong(String password){
		String regex = "(?=^.{8,}$)((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$";
		return isValid(password, regex);
	}

	/**
	 * 通过正则表达式验证正确性
	 *
	 * @param text
	 * @param regex
	 * @return
	 */
	public static boolean isValid(String text, String regex){
		Pattern pat = Pattern.compile(regex);
		Matcher mat = pat.matcher(text);
		return mat.matches();
	}

}
  • 测试
if(ValidUtil.isNotEmpty(user.getName())){
  // ...
}
posted @ 2022-07-22 15:15  DogLeftover  阅读(10)  评论(0编辑  收藏  举报