cn.signit.sdk.util.Validator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of signit-java-sdk Show documentation
Show all versions of signit-java-sdk Show documentation
welcome use signit Java Sdk!
/*
* Copyright © 2017 signit.cn. All rights reserved.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package cn.signit.sdk.util;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class Validator {
private Validator() {
}
/**
* 正则表达式常量类.
*
* @author zhd
* @since 1.0.0
*/
public static final class RegexType {
private RegexType() {
}
/**
* 邮箱正则表达式.
*
* @since 1.0.0
*/
public static final String EMAIL = "^[a-zA-Z0-9_\\.\\-\\+]+@[a-zA-Z0-9_\\.\\-\\+]+\\.[a-zA-Z]{2,5}$";
/**
* 手机正则表达式.
*
* 规则说明:
* 中国大陆:开头1 3-8号段,后边跟9位数字
* 台湾:09开头后面跟8位数字
* 香港:9或6开头后面跟7位数字
* 澳门:66或68开头后面跟5位数字
* 注意:以上表达式只验证港澳台及大陆手机号码,不包含座机小灵通及区号等验证
*
* @since 1.0.0
*/
public static final String CHINA_CELLPHONE = "^[1][3-8]\\d{9}$|^([6|9])\\d{7}$"
+ "|^[0][9]\\d{8}$|^[6]([8|6])\\d{5}$";
/**
* 整数正则表达式.
* 包括正整数和负整数以及0.
*
* @since 1.0.0
*/
public static final String INTEGER_NUMBER = "^(-|\\+)?\\d+$";
/**
* IPv4正则表达式.
*
* @since 1.0.0
*/
public static final String IPV4 = "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)"
+ "(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$";
/**
* IPv6标准格式正则表达式.
*
* @since 1.0.0
*/
public static final String IPV6_STD = "^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$";
/**
* IPv6十六进制压缩格式正则表达式.
*
* @since 1.0.0
*/
public static final String IPV6_HEX_COMPRESSED = "^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::"
+ "((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$";
/**
* 通用身份证正则表达式.
*
* @since 1.0.0
*/
public static final String COMMON_ID_CARD = "^[0-9a-zA-Z]{6,}$";
/**
* 中国大陆身份证(15位)正则表达式.
*
* @since 1.0.0
*/
public static final String CHINA_MAINLAND_ID_CARD_15 = "^[1-9]\\d{7}((0[1-9])||(1[0-2]))((0[1-9])||"
+ "(1\\d)||(2\\d)||(3[0-1]))\\d{3}$";
/**
* 中国大陆身份证(18位)正则表达式.
*
* @since 1.0.0
*/
public static final String CHINA_MAINLAND_ID_CARD_18 = "^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])||(1[0-2]))((0[1-9])||"
+ "(1\\d)||(2\\d)||(3[0-1]))\\d{3}([0-9]||X)$";
/**
* 中国香港身份证正则表达式.
*
* 规则说明:
* 一个英文+6个数字+(一个校验码,0~9或A)
*
* @since 1.0.0
*/
public static final String CHINA_HK_ID_CARD = "^[A-Z]{1,2}[0-9]{6}([0-9A])$";
/**
* 中国澳门身份证正则表达式.
*
* 规则说明:
* 第一位1、5、7,后面6个数字,最后带括号的一位校验码0~9
*
* @since 1.0.0
*/
public static final String CHINA_MO_ID_CARD = "^[157][0-9]{6}([0-9])$";
/**
* 中国台湾身份证正则表达式.
*
* 规则说明:
* 1个英文+9个数字
*
* @since 1.0.0
*/
public static final String CHINA_TW_ID_CARD = "^[A-Z][0-9]{9}$";
/**
* 中国台湾身份证正则表达式.
*
* 规则说明:
* 6~50位,且由字母、数字、特殊可打印字符,且不含空格的任意2种的组合
*
* @since 1.0.0
*/
private static final String PASSWORD_BASE = "^(?![0-9]*$)(?![a-zA-Z]*$)(?![!\\[\\]\"#$%&'()*+,\\-./:;<=>?@^_`{|}~]*$).";
private static final String PASSWORD_LEN_TEMP = "{%d,%d}$";
public static final String PASSWORD = PASSWORD_BASE + "{6,50}$";
/**
* URL正则表达式.
*
* 规则说明:
* 支持http/https/ftp/ftps/sftp/file/gopher/news/nntp/telnet方式的URL
*
* @since 1.0.0
*/
public static final String URL = "^(?:https?|ftp?|sftp|file|gopher|news|nntp|telnet):///?[^\\s/$.?#].[^\\s]*$";
/**
* MD5正则表达式.
*
* 规则说明:
* 支持十六进制编码大/小写32个字符方式的MD5
*
* @since 1.0.0
*/
public static final String MD5 = "^[a-fA-F0-9]{32}$";
/**
* SHA1正则表达式.
*
* 规则说明:
* 支持十六进制编码大/小写40个字符方式的SHA1
*
* @since 1.0.0
*/
public static final String SHA1 = "^[a-fA-F0-9]{40}$";
/**
* WSID正则表达式.
*
* 规则说明:
* WSID_大写字母4个字符_十六进制编码大/小写32个字符
*
* @since 1.0.0
*/
public static final String WSID = "^WSID_[A-Z]{4}_[a-fA-F0-9]{32}$";
/**
* BASE64编码正则表达式.
*
* 规则说明:
* https://stackoverflow.com/questions/8571501/how-to-check-whether-the-string-is-base64-encoded-or-not
*
* @since 1.0.0
*/
public static final String BASE64 = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
/**
* 16进制编码正则表达式.
*
* 规则说明:
* 0 1 2 3 4 5 6 7 8 9 a/A b/B c/C d/D e/E f/F
*
* @since 1.0.0
*/
public static final String HEX = "[a-fA-F0-9]+";
}
/**
* 校验并断言表达式不为false
.
* 如果为false
则抛出 异常
*
* @param expression
* 待校验的表达式
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notFalse(boolean expression) {
if (!expression) {
throw new IllegalArgumentException();
}
}
/**
* 校验并断言表达式不为false
.
* 如果为false
则抛出 异常
*
* @param expression
* 待校验的表达式
* @param errorMessage
* 自定义校验失败的异常描述信息
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notFalse(boolean expression, Object errorMessage) {
if (!expression) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
}
/**
* 校验并断言表达式不为false
.
* 如果为false
则抛出 异常,
* 且允许自定义错误描述信息模板.
*
* @param expression
* 待校验的表达式
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notFalse(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
if (!expression) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 校验并断言表达式为false
.
* 如果不为false
则抛出 异常
*
* @param expression
* 待校验的表达式
* @param errorMessage
* 自定义校验失败的异常描述信息
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isFalse(boolean expression, Object errorMessage) {
if (expression) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
}
/**
* 校验并断言表达式为false
.
* 如果不为false
则抛出 异常,
* 且允许自定义错误描述信息模板.
*
* @param expression
* 待校验的表达式
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isFalse(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
if (expression) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 校验并断言表达式为true
.
* 如果不为true
则抛出 异常
*
* @param expression
* 待校验的表达式
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isTrue(boolean expression) {
if (!expression) {
throw new IllegalArgumentException();
}
}
/**
* 校验并断言表达式为true
.
* 如果不为true
则抛出 异常
*
* @param expression
* 待校验的表达式
* @param errorMessage
* 自定义校验失败的异常描述信息
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isTrue(boolean expression, Object errorMessage) {
if (!expression) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
}
/**
* 校验并断言表达式为true
.
* 如果不为true
则抛出 异常,
* 且允许自定义错误描述信息模板.
*
* @param expression
* 待校验的表达式
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isTrue(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
if (!expression) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 校验并断言表达式不为true
.
* 如果为true
则抛出 异常
*
* @param expression
* 待校验的表达式
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notTrue(boolean expression) {
if (expression) {
throw new IllegalArgumentException();
}
}
/**
* 校验并断言表达式不为true
.
* 如果为true
则抛出 异常
*
* @param expression
* 待校验的表达式
* @param errorMessage
* 自定义校验失败的异常描述信息
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notTrue(boolean expression, Object errorMessage) {
if (expression) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
}
/**
* 校验并断言表达式不为true
.
* 如果为true
则抛出 异常,
* 且允许自定义错误描述信息模板.
*
* @param expression
* 待校验的表达式
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void notTrue(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
if (expression) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 校验并断言对象为null
.
* 如果不为null
则抛出 异常
*
* @param reference
* 待校验的对象
* @param
* 校验的该对象
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isNull(T reference) {
if (reference != null) {
throw new IllegalArgumentException();
}
}
/**
* 校验并断言对象为null
.
* 如果不为null
则抛出 异常
*
* @param reference
* 待校验的对象
* @param errorMessage
* 自定义校验失败的异常描述信息
* @param
* 校验的该对象
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isNull(T reference, Object errorMessage) {
if (reference != null) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
}
/**
* 校验并断言对象为null
.
* 如果不为null
则抛出 异常,
* 且允许自定义错误描述信息模板.
*
* @param reference
* 待校验的对象
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @param
* 校验的该对象
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static void isNull(T reference, String errorMessageTemplate, Object... errorMessageArgs) {
if (reference != null) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 校验并断言任意对象不是null
. 如果是null
,
* 则抛出 异常
*
* @param reference
* 待校验的对象
* @return 校验后的该对象
* @param
* 校验后的该对象
* @throws java.lang.NullPointerException
* 抛出空指针异常.
* @author zhd
* @since 1.0.0
*/
public static T notNull(T reference) {
if (reference == null) {
throw new NullPointerException();
}
return reference;
}
/**
* 校验并断言任意对象不是null
. 如果是null
,
* 则抛出 异常, 且允许自定义错误描述信息.
*
* @param reference
* 待校验的对象
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该对象
* @param
* 校验后的该对象
* @throws java.lang.NullPointerException
* 抛出空指针异常.
* @author zhd
* @since 1.0.0
*/
public static T notNull(T reference, Object errorMessage) {
if (reference == null) {
throw new NullPointerException(String.valueOf(errorMessage));
}
return reference;
}
/**
* 校验并断言任意对象不是null
. 如果是null
,
* 则抛出 异常, 且允许自定义错误描述信息模板.
*
* @param reference
* 待校验的对象
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该对象
* @param
* 校验后的该对象
* @throws java.lang.NullPointerException
* 抛出空指针异常.
* @author zhd
* @since 1.0.0
*/
public static T notNull(T reference, String errorMessageTemplate, Object... errorMessageArgs) {
if (reference == null) {
throw new NullPointerException(String.format(errorMessageTemplate, errorMessageArgs));
}
return reference;
}
/**
* 校验并断言任意集合(如:List/Set)不是空. 如果是空,
* 则抛出 异常
*
* @param collection
* 待校验的集合(如:List/Set)
* @return 校验后的该集合(如:List/Set)
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Collection> notEmpty(Collection> collection) {
if (isEmpty(collection)) {
throw new IllegalArgumentException();
}
return collection;
}
/**
* 校验并断言任意集合(如:List/Set)不是空. 如果是空,
* 则抛出 异常, 且允许自定义错误描述信息.
*
* @param collection
* 待校验的集合(如:List/Set)
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该集合(如:List/Set)
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Collection> notEmpty(Collection> collection, Object errorMessage) {
if (isEmpty(collection)) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
return collection;
}
/**
* 校验并断言任意集合(如:List/Set)不是空. 如果是空,
* 则抛出 异常, 且允许自定义错误描述信息.
*
* @param collection
* 待校验的集合(如:List/Set)
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该集合(如:List/Set)
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Collection> notEmpty(Collection> collection, String errorMessageTemplate,
Object... errorMessageArgs) {
if (isEmpty(collection)) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
return collection;
}
/**
* 校验并断言任意Map不是空. 如果是空, 则抛出 异常
*
* @param map
* 待校验的Map
* @return 校验后的该Map
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Map, ?> notEmpty(Map, ?> map) {
if (isEmpty(map)) {
throw new IllegalArgumentException();
}
return map;
}
/**
* 校验并断言任意Map不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param map
* 待校验的Map
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该Map
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Map, ?> notEmpty(Map, ?> map, Object errorMessage) {
if (isEmpty(map)) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
return map;
}
/**
* 校验并断言任意Map不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param map
* 待校验的Map
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该Map
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static Map, ?> notEmpty(Map, ?> map, String errorMessageTemplate, Object... errorMessageArgs) {
if (isEmpty(map)) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
return map;
}
/**
* 校验并断言任意对象数组不是空. 如果是空, 则抛出 异常
*
* @param arr
* 待校验的对象数组
* @return 校验后的该对象数组
* @param
* 校验后的该对象数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static T[] notEmpty(T[] arr) {
if (isEmpty(arr)) {
throw new IllegalArgumentException();
}
return arr;
}
/**
* 校验并断言任意对象数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的对象数组
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该对象数组
* @param
* 校验后的该对象数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
*
* @author zhd
* @since 1.0.0
*/
public static T[] notEmpty(T[] arr, Object errorMessage) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
return arr;
}
/**
* 校验并断言任意对象数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的对象数组
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该对象数组
* @param
* 校验后的该对象数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static T[] notEmpty(T[] arr, String errorMessageTemplate, Object... errorMessageArgs) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
return arr;
}
/**
* 校验并断言字节型数组不是空. 如果是空, 则抛出 异常
*
* @param arr
* 待校验的字节型数组
* @return 校验后的该字节型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static byte[] notEmpty(byte[] arr) {
if (isEmpty(arr)) {
throw new IllegalArgumentException();
}
return arr;
}
/**
* 校验并断言字节型数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的字节型数组
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该字节型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
*
* @author zhd
* @since 1.0.0
*/
public static byte[] notEmpty(byte[] arr, Object errorMessage) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
return arr;
}
/**
* 校验并断言字节型数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的字节型数组
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该字节型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static byte[] notEmpty(byte[] arr, String errorMessageTemplate, Object... errorMessageArgs) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
return arr;
}
/**
* 校验并断言整数型数组不是空. 如果是空, 则抛出 异常
*
* @param arr
* 待校验的整数型数组
* @return 校验后的该整数型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static int[] notEmpty(int[] arr) {
if (isEmpty(arr)) {
throw new IllegalArgumentException();
}
return arr;
}
/**
* 校验并断言整数型数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的整数型数组
* @param errorMessage
* 自定义校验失败的异常描述信息
* @return 校验后的该整数型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
*
* @author zhd
* @since 1.0.0
*/
public static int[] notEmpty(int[] arr, Object errorMessage) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.valueOf(errorMessage));
}
return arr;
}
/**
* 校验并断言整数型数组不是空. 如果是空, 则抛出 异常,
* 且允许自定义错误描述信息.
*
* @param arr
* 待校验的整数型数组
* @param errorMessageTemplate
* 自定义校验失败的异常描述信息模板
* @param errorMessageArgs
* 异常描述信息模板的参数
* @return 校验后的该整数型数组
* @throws java.lang.IllegalArgumentException
* 抛出参数不合法异常.
* @author zhd
* @since 1.0.0
*/
public static int[] notEmpty(int[] arr, String errorMessageTemplate, Object... errorMessageArgs) {
if (isEmpty(arr)) {
throw new IllegalArgumentException(String.format(errorMessageTemplate, errorMessageArgs));
}
return arr;
}
/**
* 校验任意对象是否为email
格式.
*
* @param reference
* 待校验的对象
* @return true
是email
格式; false
* 不是email
格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isEmail(T reference) {
return isEmail(reference, RegexType.EMAIL);
}
/**
* 校验任意对象是否为邮箱( email
)格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
邮箱( email
)格式; false
* 不是邮箱( email
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isEmail(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isEmail(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为手机( cellphone
, 中国大陆及其港澳台)格式.
*
* @param reference
* 待校验的对象
* @return true
是手机( cellphone
, 中国大陆及其港澳台)格式;
* false
不是手机( cellphone
, 中国大陆及其港澳台)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isChinaCellphone(T reference) {
return isChinaCellphone(reference, RegexType.CHINA_CELLPHONE);
}
/**
* 校验任意对象是否为手机( cellphone
, 中国大陆及其港澳台)格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
手机( cellphone
, 中国大陆及其港澳台)格式;
* false
不是手机( cellphone
, 中国大陆及其港澳台)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isChinaCellphone(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isChinaCellphone(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为整数(正负整数和0)数字( number
)格式.
*
* @param reference
* 待校验的对象
* @return true
整数(正负整数和0)数字( number
)格式;
* false
不是整数(正负整数和0)数字( number
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIntegerNumber(T reference) {
return isIntegerNumber(reference, RegexType.INTEGER_NUMBER);
}
/**
* 校验任意对象是否为整数(正负整数和0)数字( number
)格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
整数(正负整数和0)数字( number
)格式;
* false
不是整数(正负整数和0)数字( number
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIntegerNumber(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isIntegerNumber(reference);
}
return match(regex, reference);
}
/**
* 校验字符串是否为空.
*
*
* "" true
* null true
* " " false
*
*
* @param string
* 任意字符序列
* @return true
是空字符串; false
不是空字符串
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(CharSequence string) {
return string == null || string.length() <= 0;
}
/**
* 校验Map是否为空.
*
*
* null true
* {} true
*
*
* @param map
* 任意Map
* @return true
是空Map; false
不是空Map
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(Map, ?> map) {
return map == null || map.isEmpty();
}
/**
* 校验集合(如:List/Set)是否为空.
*
*
* null true
* [] true
*
*
* @param collection
* 任意集合(如:List/Set)
* @return true
是空集合(如:List/Set); false
* 不是空集合(如:List/Set)
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(Collection> collection) {
return collection == null || collection.isEmpty();
}
/**
* 校验任意对象数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 任意对象数组
* @param 泛型调用
* @return true
是空对象数组; false
不是空对象数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(T[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始整型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始整型数组
* @return true
是空原始整型数组; false
不是空原始整型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(int[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始长整型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始长整型数组
* @return true
是空原始长整型数组; false
不是空原始长整型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(long[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始单精度浮点型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始单精度浮点型数组
* @return true
是空原始单精度浮点型数组; false
不是空原始单精度浮点型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(float[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始双精度浮点型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始双精度浮点型数组
* @return true
是空原始双精度浮点型数组; false
不是空原始双精度浮点型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(double[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始短整型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始短整型数组
* @return true
是空原始短整型数组; false
不是空原始短整型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(short[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始boolean型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始boolean型数组
* @return true
是空原始boolean型数组; false
* 不是空原始boolean型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(boolean[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始字节型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始字节型数组
* @return true
是空原始字节型数组; false
不是空原始字节型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(byte[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验原始字符型数组是否为空.
*
*
* null true
* [] true
*
*
* @param arr
* 原始字符型数组
* @return true
是空原始字符型数组; false
不是空原始字符型数组
* @author zhd
* @since 1.0.0
*/
public static boolean isEmpty(char[] arr) {
return arr == null || arr.length <= 0;
}
/**
* 校验任意对象是否为( IP
)地址(支持IPv4/IPv6)格式.
*
* @param reference
* 待校验的对象
* @return true
是IP
地址(支持IPv4/IPv6)格式;
* false
不是IP
地址(支持IPv4/IPv6)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIP(T reference) {
return isIPv4(reference) || isIPv6(reference);
}
/**
* 校验任意对象是否为( IP
)地址(支持IPv4/IPv6)格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是IP
地址(支持IPv4/IPv6)格式;
* false
不是IP
地址(支持IPv4/IPv6)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIP(T reference, String regex) {
return isIPv4(reference, regex) || isIPv6(reference, regex);
}
/**
* 校验任意对象是否为( IPv4
)地址格式.
*
* @param reference
* 待校验的对象
* @return true
是IPv4
地址格式; false
* 不是IPv4
地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIPv4(T reference) {
return isIPv4(reference, RegexType.IPV4);
}
/**
* 校验任意对象是否为( IPv4
)地址格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是IPv4
地址格式; false
* 不是IPv4
地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIPv4(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isIPv4(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( IPv6
)地址格式.
*
* @param reference
* 待校验的对象
* @return true
是IPv6
地址格式; false
* 不是IPv6
地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIPv6(T reference) {
return isIPv6(reference, RegexType.IPV6_STD) || isIPv6(reference, RegexType.IPV6_HEX_COMPRESSED);
}
/**
* 校验任意对象是否为( IPv6
)地址格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是IPv6
地址格式; false
* 不是IPv6
地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isIPv6(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isIPv6(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为通用身份证( ID Card
)格式.
*
* 注: 此检查不够严格,只要包含至少6位的字母与数字组合均可通过.
*
* @param reference
* 待校验的对象
* @return true
是通用身份证( ID Card
)格式;
* false
不是通用身份证( ID Card
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isCommonIDcard(T reference) {
return isCommonIDcard(reference, RegexType.COMMON_ID_CARD);
}
/**
* 校验任意对象是否为通用身份证( ID Card
)格式.
*
* 注: 此检查不够严格,只要包含至少6位的字母与数字组合均可通过.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是通用身份证( ID Card
)格式;
* false
不是通用身份证( ID Card
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isCommonIDcard(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isCommonIDcard(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为中国(含港澳台)身份证( ID Card
)格式.
*
* 注: 此检查较为严格,但只保证中国(含港澳台)身份证( ID Card
* )格式符合身份证编码规则,不能确定身份证本身是否有效.
*
* @param reference
* 待校验的对象
* @return true
是中国(含港澳台)身份证( ID Card
)格式;
* false
不是中国(含港澳台)身份证( ID Card
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isChinaIDcard(T reference) {
return isChinaIDcard(reference, RegexType.CHINA_MAINLAND_ID_CARD_18)
|| isChinaIDcard(reference, RegexType.CHINA_MAINLAND_ID_CARD_15)
|| isChinaIDcard(reference, RegexType.CHINA_HK_ID_CARD)
|| isChinaIDcard(reference, RegexType.CHINA_MO_ID_CARD)
|| isChinaIDcard(reference, RegexType.CHINA_TW_ID_CARD);
}
/**
* 校验任意对象是否为中国(含港澳台)身份证( ID Card
)格式.
*
* 注: 此检查较为严格,但只保证中国(含港澳台)身份证( ID Card
* )格式符合身份证编码规则,不能确定身份证本身是否有效.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是中国(含港澳台)身份证( ID Card
)格式;
* false
不是中国(含港澳台)身份证( ID Card
)格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isChinaIDcard(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isChinaIDcard(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为密码格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @return true
是密码格式;
* false
不是密码格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isPassword(T reference) {
return isPassword(reference, RegexType.PASSWORD);
}
/**
* 校验任意对象是否为密码格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param minLen
* 自定义允许的最小长度(包含).
* @return true
是密码格式;
* false
不是密码格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isPassword(T reference, int minLen) {
return isPassword(reference, RegexType.PASSWORD_BASE + String.format(RegexType.PASSWORD_LEN_TEMP, minLen, 50));
}
/**
* 校验任意对象是否为密码格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param minLen
* 自定义允许的最小长度(包含).
* @param maxLen
* 自定义允许的最大长度(包含).
* @return true
是密码格式;
* false
不是密码格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isPassword(T reference, int minLen, int maxLen) {
return isPassword(reference,
RegexType.PASSWORD_BASE + String.format(RegexType.PASSWORD_LEN_TEMP, minLen, maxLen));
}
/**
* 校验任意对象是否为密码格式.
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是密码格式;
* false
不是密码格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isPassword(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isPassword(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( URL
)地址格式.
*
* @param reference
* 待校验的对象
* @return true
是( URL
)地址格式; false
* 不是( URL
)地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isUrl(T reference) {
return isUrl(reference, RegexType.URL);
}
/**
* 校验任意对象是否为( URL
)地址格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( URL
)地址格式; false
* 不是( URL
)地址格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isUrl(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isUrl(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( MD5
)16进制表示的格式.
*
* @param reference
* 待校验的对象
* @return true
是( MD5
)16进制表示的格式;
* false
不是( MD5
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isMd5(T reference) {
return isMd5(reference, RegexType.MD5);
}
/**
* 校验任意对象是否为( MD5
)16进制表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( MD5
)16进制表示的格式;
* false
不是( MD5
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isMd5(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isMd5(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( SHA1
)16进制表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @return true
是( SHA1
)16进制表示的格式;
* false
不是( SHA1
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isSha1(T reference) {
return isSha1(reference, RegexType.SHA1);
}
/**
* 校验任意对象是否为( SHA1
)16进制表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( SHA1
)16进制表示的格式;
* false
不是( SHA1
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isSha1(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isSha1(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( WSID
)表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @return true
是( WSID
)表示的格式; false
* 不是( WSID
)表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isWsid(T reference) {
return isWsid(reference, RegexType.WSID);
}
/**
* 校验任意对象是否为( WSID
)表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( WSID
)表示的格式; false
* 不是( WSID
)表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isWsid(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isWsid(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( BASE64
)表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @return true
是( BASE64
)表示的格式;
* false
不是( BASE64
)表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isBase64(T reference) {
return isBase64(reference, RegexType.BASE64);
}
/**
* 校验任意对象是否为( BASE64
)表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( BASE64
)表示的格式;
* false
不是( BASE64
)表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isBase64(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isBase64(reference);
}
return match(regex, reference);
}
/**
* 校验任意对象是否为( HEX
)16进制表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @return true
是( HEX
)16进制表示的格式;
* false
不是( HEX
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isHex(T reference) {
return isHex(reference, RegexType.HEX);
}
/**
* 校验任意对象是否为( HEX
)16进制表示的格式.
* 使用默认规则:
*
* @param reference
* 待校验的对象
* @param regex
* 自定义正则表达式对reference
进行校验.若为null
,则使用默认正则表达式.
* @return true
是( HEX
)16进制表示的格式;
* false
不是( HEX
)16进制表示的格式
* @param
* 校验结果
* @author zhd
* @since 1.0.0
*/
public static boolean isHex(T reference, String regex) {
if (reference == null) {
return false;
}
if (regex == null) {
return isHex(reference);
}
return match(regex, reference);
}
private static boolean match(String regex, T reference) {
String input = null;
if (regex == null || reference == null) {
return false;
}
if (reference instanceof String) {
input = (String) reference;
} else if (reference instanceof byte[]) {
input = new String((byte[]) reference);
} else {
input = String.valueOf(reference);
}
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
return matcher.lookingAt();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy