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())){
// ...
}