package com.iailab.framework.common.util.validation;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.lang.Assert;
|
import org.springframework.util.StringUtils;
|
|
import javax.validation.ConstraintViolation;
|
import javax.validation.ConstraintViolationException;
|
import javax.validation.Validation;
|
import javax.validation.Validator;
|
import java.util.Set;
|
import java.util.regex.Pattern;
|
|
/**
|
* 校验工具类
|
*
|
* @author iailab
|
*/
|
public class ValidationUtils {
|
|
private static final Pattern PATTERN_MOBILE = Pattern.compile("^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[0,1,4-9])|(?:5[0-3,5-9])|(?:6[2,5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[0-3,5-9]))\\d{8}$");
|
|
private static final Pattern PATTERN_URL = Pattern.compile("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
|
|
private static final Pattern PATTERN_XML_NCNAME = Pattern.compile("[a-zA-Z_][\\-_.0-9_a-zA-Z$]*");
|
|
public static boolean isMobile(String mobile) {
|
return StringUtils.hasText(mobile)
|
&& PATTERN_MOBILE.matcher(mobile).matches();
|
}
|
|
public static boolean isURL(String url) {
|
return StringUtils.hasText(url)
|
&& PATTERN_URL.matcher(url).matches();
|
}
|
|
public static boolean isXmlNCName(String str) {
|
return StringUtils.hasText(str)
|
&& PATTERN_XML_NCNAME.matcher(str).matches();
|
}
|
|
public static void validate(Object object, Class<?>... groups) {
|
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
|
Assert.notNull(validator);
|
validate(validator, object, groups);
|
}
|
|
public static void validate(Validator validator, Object object, Class<?>... groups) {
|
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
|
if (CollUtil.isNotEmpty(constraintViolations)) {
|
throw new ConstraintViolationException(constraintViolations);
|
}
|
}
|
|
}
|