Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.cybermkd.common.util.matcher.PatternMatcher Maven / Gradle / Ivy
package com.cybermkd.common.util.matcher;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.regex.Pattern;
/**
* Created by ice on 14-12-30.
*/
public class PatternMatcher {
/**
* 匹配正则表达式
*
* @param regex regex
* @param value value
* @return boolean
*/
public static boolean match(String regex, String value) {
Pattern pattern = Pattern.compile(regex);
return pattern.matcher(value).find();
}
/**
* 区分大小写
*
* @param regex regex
* @param flags flags
* @param value value
* @return boolean
*/
public static boolean match(String regex, int flags, String value) {
Pattern pattern = Pattern.compile(regex, flags);
return pattern.matcher(value).find();
}
/**
* 邮箱验证工具
*
* @param value value
* @return boolean
*/
public static boolean isEmail(String value) {
String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 手机号码验证
*
* @param value value
* @return boolean
*/
public static boolean isMobile(String value) {
String check = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 座机验证
*
* @param value value
* @return boolean
*/
public static boolean isTel(String value) {
String check = "^\\d{3,4}-?\\d{7,9}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 电话号码 包括移动电话和座机
*
* @param value value
* @return boolean
*/
public static boolean isPhone(String value) {
String telcheck = "^\\d{3,4}-?\\d{7,9}$";
String mobilecheck = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$";
return match(telcheck, Pattern.CASE_INSENSITIVE, value) || match(mobilecheck, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 输入内容限制为英文字母 、数字和下划线
* @return boolean
*/
public static boolean isGeneral(String value) {
String check = "^\\w+$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 输入内容限制为英文字母 、数字和下划线
* @param min 最小长度
* @param max 最大长度
* @return boolean
*/
public static boolean isGeneral(String value, int min, int max) {
String check = "^\\w{" + min + "," + max + "}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 判断是否是生日
*
* @param value value
* @return boolean
*/
public static boolean isBirthDay(String value) {
String check = "(\\d{4})(/|-|\\.)(\\d{1,2})(/|-|\\.)(\\d{1,2})$";
if (match(check, Pattern.CASE_INSENSITIVE, value)) {
int year = Integer.parseInt(value.substring(0, 4));
int month = Integer.parseInt(value.substring(5, 7));
int day = Integer.parseInt(value.substring(8, 10));
if (month < 1 || month > 12)
return false;
if (day < 1 || day > 31)
return false;
if ((month == 4 || month == 6 || month == 9 || month == 11)
&& day == 31)
return false;
if (month == 2) {
boolean isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day > 29 || (day == 29 && !isleap))
return false;
}
return true;
} else {
return false;
}
}
/**
* 身份证
*
* @param value value
* @return boolean
*/
public static boolean isIdentityCard(String value) {
String check = "(^\\d{15}$)|(^\\d{17}([0-9]|X)$)";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 邮政编码
*
* @param value value
* @return boolean
*/
public static boolean isZipCode(String value) {
String check = "^[0-9]{6}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 货币
*
* @param value value
* @return boolean
*/
public static boolean isMoney(String value) {
String check = "^(\\d+(?:\\.\\d{1,2})?)$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 输入数字
* @return boolean
*/
public static boolean isNumber(String value) {
String check = "^(\\+|\\-)?\\d+$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 输入数字
* @param min 最小长度
* @param max 最大长度
* @return boolean
*/
public static boolean isNumber(String value, int min, int max) {
String check = "^(\\+|\\-)?\\d{" + min + "," + max + "}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 正整数
* @return boolean
*/
public static boolean isPositiveNumber(String value) {
String check = "^\\d+$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 正整数
* @param min 最小长度
* @param max 最大长度
* @return boolean
*/
public static boolean isPositiveNumber(String value, int min, int max) {
String check = "^\\d{" + min + "," + max + "}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 中文
*
* @param value value
* @return boolean
*/
public static boolean isChinese(String value) {
String check = "^[\\u2E80-\\u9FFF]+$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
public static boolean isChinese(String value, int min, int max) {
String check = "^[\\u2E80-\\u9FFF]{" + min + "," + max + "}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 中文字、英文字母、数字和下划线
* @return boolean
*/
public static boolean isString(String value) {
String check = "^[\\u0391-\\uFFE5\\w]+$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value 中文字、英文字母、数字和下划线
* @param min 最小长度
* @param max 最大长度
* @return boolean
*/
public static boolean isString(String value, int min, int max) {
String check = "^[\\u0391-\\uFFE5\\w]{" + min + "," + max + "}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* @param value UUID
* @return boolean
*/
public static boolean isUUID(String value) {
String check = "^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 匹配是否是链接
*
* @param value value
* @return boolean
*/
public static boolean isUrl(String value) {
String check = "^((https?|ftp):\\/\\/)?(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 判断时间
*
* @param value value
* @return boolean
*/
public static boolean isDateTime(String value) {
String check = "^(\\d{4})(/|-|\\.|年)(\\d{1,2})(/|-|\\.|月)(\\d{1,2})(日)?(\\s+\\d{1,2}(:|时)\\d{1,2}(:|分)?(\\d{1,2}(秒)?)?)?$";// check = "^(\\d{4})(/|-|\\.)(\\d{1,2})(/|-|\\.)(\\d{1,2})$";
return match(check, Pattern.CASE_INSENSITIVE, value);
}
/**
* 空值
*
* @param value 值
* @return
*/
public static boolean isBlank(Object value) {
if (value instanceof Collection) {
return ((Collection) value).isEmpty();
} else if (value instanceof String) {
return "".equals(value.toString().trim());
} else {
return value == null;
}
}
public static boolean isNotBlank(Object value) {
return !isBlank(value);
}
public static boolean isLength(String value, int min, int max) {
int length = isBlank(value) ? 0 : value.length();
return length >= min && length <= max;
}
public static boolean compareDate(String date1, String date2, String df) {
SimpleDateFormat sdf = new SimpleDateFormat(df);
try {
Date d1 = sdf.parse(date1);
Date d2 = sdf.parse(date2);
return d1.compareTo(d2) > 0;
} catch (ParseException e) {
return false;
}
}
public static boolean compareDate(String date1, String date2) {
return compareDate(date1, date2, "yyyy-MM-dd HH:mm:ss");
}
}