数据验证器及其注解。
该 API 提供了大量通用的适用于本土化的常用验证方法,如:判断是否为 null、判断是否不为 null、判断(字符串、数组、集合、Map等)是否为空、判断(字符串、数组、集合、Map等)是否不为空、IP 地址合法性验证、ISBN 合法性验证、身份证号码验证、QQ 验证。
并提供对应的基于 javax.validation
的校验注解。
判断任意对象是否为 null
import com.buession.core.validator.Validate;
boolean result = Validate.isNull(obj);
判断任意对象是否不为 null
import com.buession.core.validator.Validate;
boolean result = Validate.isNotNull(obj);
判断字符串是否为空白字符串,为 null 或长度为 0 时也返回 true;其余情况,字符串中含有任意可打印字符串则为 false
import com.buession.core.validator.Validate;
String str = null;
boolean result = Validate.isBlank(str); // true
String str = "";
boolean result = Validate.isBlank(str); // true
String str = "\\r\\n";
boolean result = Validate.isBlank(str); // true
String str = "\\r\\na";
boolean result = Validate.isBlank(str); // false
isNotBlank
与之相反isEmpty
可判断字符串、数组、集合、Map 是否为空,即:为 null 或长度/大小为 0 时,表示为空
import com.buession.core.validator.Validate;
String str = null;
boolean result = Validate.isEmpty(str); // true
String str = " ";
boolean result = Validate.isEmpty(str); // false
boolean result = Validate.isEmpty(new String[]{}); // true
boolean result = Validate.isEmpty(new Integer[]{1}); // false
isNotEmpty
与之相反isBetween
可判断一个整型或浮点型,是否在两个整型或者浮点型数字之间
import com.buession.core.validator.Validate;
boolean result = Validate.isBetween(2, 1, 3); // true
boolean result = Validate.isBetween(2, 2, 3); // false
可通过参数设置是否包含边界值
import com.buession.core.validator.Validate;
boolean result = Validate.isBetween(2, 1, 3, true); // true
boolean result = Validate.isBetween(2, 2, 3, true); // true
isTel
可判断一个字符串是否为电话号码,仅支持普通座机号码,不支持 110、400、800等特殊号码。格式,需符合:86-区号-电话号码、区号-电话号码、(区号)电话号码、(区号)电话号码、电话号码。可通过参数 com.buession.core.validator.routines.TelValidator.AreaCodeType
指定区号的控制策略。仅支持中国的电话号码。
import com.buession.core.validator.Validate;
boolean result = Validate.isTel("028-12345678"); // true
boolean result = Validate.isTel("028-02345678"); // false
isMobile
可判断一个字符串是否为手机号码。仅支持中国的手机号码。
import com.buession.core.validator.Validate;
boolean result = Validate.isMobile("028-12345678"); // false
boolean result = Validate.isMobile("13800138000"); // true
isPostCode
可判断一个字符串是否为邮政编码。仅支持中国的邮政编码。
import com.buession.core.validator.Validate;
boolean result = Validate.isPostCode("043104"); // false
boolean result = Validate.isPostCode("643104"); // true
isQQ
可判断一个字符串是否为 QQ 号码。
import com.buession.core.validator.Validate;
boolean result = Validate.isQQ("043104"); // false
boolean result = Validate.isQQ("25132.141"); // true
isIDCard
可判断一个字符串是否合法的身份证号码。仅支持 18 位的身份证号码。身份证号码需符合其身份证号码编排规律。
import com.buession.core.validator.Validate;
boolean result = Validate.isIDCard("xxxxxxxxxxxxxxxxx");
boolean result = Validate.isIDCard("xxxxxxxxxxxxxxxxx");
可以和身份证号码进行比对,其实该方法的实际作用不是很大,只是在业务系统里面有需要填写身份证号码和出生日期时,简化验证出生日期和身份证号码中的出生日期是否一致。
import com.buession.core.validator.Validate;
boolean result = Validate.isIDCard("xxxxxxxxxxxxxxxxx", true, "2.10-01-01");
其它,更多方法可以参考手册。
javax 的 validation 是 Java 定义的一套基于注解的数据校验规范,buession framework 基于 javax.validation 实现了 Validate
中所有验证方法的校验注解。
注解 | 验证的数据类型 | 说明 |
---|---|---|
@Alnum | CharSequence 的子类型,Character | 验证注解的元素值是否为数字 |
@Alpha | CharSequence 的子类型,Character | 验证注解的元素值是否为数字 |
@Numeric | CharSequence 的子类型,Character | 验证注解的元素值是否为数字 |
@Between | short、int、double 等任何 Number 的子类型 | 验证注解的元素值是否为在两个数之间 |
@Empty | CharSequence、Map、Collection、Iterator、Enumeration 的子类型和数组 | 验证注解的元素值是否为空 |
@NotEmpty | CharSequence、Map、Collection、Iterator、Enumeration 的子类型和数组 | 验证注解的元素值是否不为空 |
@HasText | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@IDCard | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@Ip | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@Isbn | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@MimeType | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@Mobile | CharSequence 的子类型 | 验证注解的元素值是否有非空字符 |
@Null | 任意类型 | 验证注解的元素值是否为 null |
@NotNull | 任意类型 | 验证注解的元素值是否为 null |
@Port | Integer | 验证注解的元素值是否为 null |
@PostCode | CharSequence 的子类型 | 验证注解的元素值是否为 null |
CharSequence 的子类型 | 验证注解的元素值是否为 null | |
@Tel | CharSequence 的子类型 | 验证注解的元素值是否为 null |
@Xdigit | CharSequence 的子类型 | 验证注解的元素值是否为 null |