importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.apache.commons.lang.StringUtils;/*** 正则表达式工具类
**/
public classRegUtils {/*** 邮箱*/
public static final String EMAIL = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";/*** 手机号码*/
public static final String PHONE = "^(1[3-9]([0-9]{9}))$";/*** 仅中文*/
public static final String CHINESE = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";/*** 整数*/
public static final String INTEGER = "^-?[1-9]\\d*$";/*** 数字*/
public static final String NUMBER = "^([+-]?)\\d*\\.?\\d+$";/*** 正整数*/
public static final String INTEGER_POS = "^[1-9]\\d*$";/*** 浮点数*/
public static final String FLOAT = "^([+-]?)\\d*\\.\\d+$";/*** 正浮点数*/
public static final String FLOAT_POS = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$";/*** 是否为正整数数字,包括0(00,01非数字)*/
public static final String INTEGER_WITH_ZERO_POS = "^(([0-9])|([1-9]([0-9]+)))$";/*** 是否为整数数字,包括正、负整数,包括0(00,01非数字)*/
public static final String NUMBER_WITH_ZERO = "^((-)?(([0-9])|([1-9]([0-9]+))))$";/*** 是否为数字字符串*/
public static final String NUMBER_TEXT = "^([0-9]+)$";/*** 数字(整数、0、浮点数),可以判断是否金额,也可以是负数*/
public static final String NUMBER_ALL = "^((-)?(([0-9])|([1-9][0-9]+))(\\.([0-9]+))?)$";/*** QQ,5-14位*/
public static final String QQ = "^[1-9][0-9]{4,13}$";/*** IP地址*/
public static final String IP = "((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))";/*** 邮编*/
public static final String POST_CODE = "[1-9]\\d{5}(?!\\d)";/*** 普通日期*/
public static final String DATE = "^[1-9]\\d{3}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3[0-1]))$";/*** 复杂日期,不区分闰年的2月
* 日期格式:2017-10-19
* 或2017/10/19
* 或2017.10.19
* 或2017年10月19日
* 最大31天的月份:(((01|03|05|07|08|10|12))-((0[1-9])|([1-2][0-9])|(3[0-1])))
* 最大30天的月份:(((04|06|11))-((0[1-9])|([1-2][0-9])|(30)))
* 最大29天的月份:(02-((0[1-9])|([1-2][0-9])))*/
public static final String DATE_COMPLEX = "^(([1-2]\\d{3})(-|/|.|年)((((01|03|05|07|08|10|12))(-|/|.|月)((0[1-9])|([1-2][0-9])|(3[0-1])))|(((04|06|11))(-|/|.|月)((0[1-9])|([1-2][0-9])|(30)))|(02-((0[1-9])|([1-2][0-9]))))(日)?)$";/*** 复杂的日期,区分闰年的2月
* 这个日期校验能区分闰年的2月,格式如下:2017-10-19
* (见:http://www.jb51.net/article/50905.htm)
* ^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$*/
public static final String DATE_COMPLEX_LEAP_YEAR = "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$";/*** 正则表达式校验,符合返回True
*@paramregex 正则表达式
*@paramcontent 校验的内容
*@return
*/
public static booleanisMatch(String regex, CharSequence content){returnPattern.matches(regex, content);
}/*** 校验手机号码
*@parammobile
*@return
*/
public static final booleanisMoblie(String mobile){boolean flag = false;if (null != mobile && !mobile.trim().equals("") && mobile.trim().length() == 11) {
Pattern pattern=Pattern.compile(PHONE);
Matcher matcher=pattern.matcher(mobile.trim());
flag=matcher.matches();
}returnflag;
}/*** 校验邮箱
*@paramvalue
*@return
*/
public static final booleanisEmail(String value){boolean flag = false;if (null != value && !value.trim().equals("")) {
Pattern pattern=Pattern.compile(EMAIL);
Matcher matcher=pattern.matcher(value.trim());
flag=matcher.matches();
}returnflag;
}/*** 校验密码
*@parampassword
*@return长度符合返回true,否则为false*/
public static final booleanisPassword(String password){boolean flag = false;if (null != password && !password.trim().equals("")) {
password&#61;password.trim();if(password.length() >&#61; 6 && password.length() <&#61; 30){return true;
}
}returnflag;
}/*** 校验手机验证码
*&#64;paramvalue
*&#64;return符合正则表达式返回true&#xff0c;否则返回false*/
public static final booleanisPhoneValidateCode(String value){boolean flag &#61; false;if (null !&#61; value && !value.trim().equals("")) {
Pattern pattern&#61; Pattern.compile("^8\\d{5}$");
Matcher matcher&#61;pattern.matcher(value.trim());
flag&#61;matcher.matches();
}returnflag;
}/*** 判断是否全部大写字母
*&#64;paramstr
*&#64;return
*/
public static booleanisUpperCase(String str){if(StringUtils.isEmpty(str)){return false;
}
String reg&#61; "^[A-Z]$";returnisMatch(reg,str);
}/*** 判断是否全部小写字母
*&#64;paramstr
*&#64;return
*/
public static booleanisLowercase(String str){if(StringUtils.isEmpty(str)){return false;
}
String reg&#61; "^[a-z]$";returnisMatch(reg,str);
}/*** 是否ip地址
*&#64;paramstr
*&#64;return
*/
public static booleanisIP(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(IP, str);
}/*** 符合返回true&#xff0c;区分30、31天和闰年的2月份(最严格的校验)&#xff0c;格式为2017-10-19
*&#64;paramstr
*&#64;return
*/
public static booleanisDate(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(DATE_COMPLEX_LEAP_YEAR, str);
}/*** 简单日期校验&#xff0c;不那么严格
*&#64;paramstr
*&#64;return
*/
public static booleanisDateSimple(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(DATE, str);
}/*** 区分30、31天&#xff0c;但没有区分闰年的2月份
*&#64;paramstr
*&#64;return
*/
public static booleanisDateComplex(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(DATE_COMPLEX, str);
}/*** 判断是否为数字字符串&#xff0c;如0011&#xff0c;10101&#xff0c;01
*&#64;paramstr
*&#64;return
*/
public static booleanisNumberText(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(NUMBER_TEXT, str);
}/*** 判断所有类型的数字&#xff0c;数字(整数、0、浮点数)&#xff0c;可以判断是否金额&#xff0c;也可以是负数
*&#64;paramstr
*&#64;return
*/
public static booleanisNumberAll(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(NUMBER_ALL, str);
}/*** 是否为正整数数字&#xff0c;包括0(00&#xff0c;01非数字)
*&#64;paramstr
*&#64;return
*/
public static booleanisIntegerWithZeroPos(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(INTEGER_WITH_ZERO_POS, str);
}/*** 是否为整数&#xff0c;包括正、负整数&#xff0c;包括0(00&#xff0c;01非数字)
*&#64;paramstr
*&#64;return
*/
public static booleanisIntegerWithZero(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(NUMBER_WITH_ZERO, str);
}/*** 符合返回true,QQ&#xff0c;5-14位
*&#64;paramstr
*&#64;return
*/
public static booleanisQQ(String str){if(StringUtils.isEmpty(str)){return false;
}returnisMatch(QQ, str);
}public static voidmain(String[] args) {
System.out.println(isMoblie("13430800244"));
System.out.println(isMoblie("17730800244"));
System.out.println(isMoblie("17630800244"));
System.out.println(isMoblie("14730800244"));
System.out.println(isMoblie("18330800244"));
System.out.println(isMoblie("19330800244"));
System.out.println(isMoblie("1333000244"));
}
}