使用正则表达式验证积累
使用正则表达式验证积累
import com.jaydenxiao.common.commonutils.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* 使用正则表达式验证输入格式
*/
public class RegexValidateUtil {
/**
* 仅中文
*/
public static final String REG_CHINESE = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";
/**
* 整数
*/
public static final String REG_INTEGER = "^-?[1-9]\\d*$";
/**
* 数字
*/
public static final String REG_NUMBER = "^([+-]?)\\d*\\.?\\d+$";
/**
* 正整数
*/
public static final String REG_INTEGER_POS = "^[1-9]\\d*$";
/**
* 浮点数
*/
public static final String REG_FLOAT = "^([+-]?)\\d*\\.\\d+$";
/**
* 正浮点数
*/
public static final String REG_FLOAT_POS = "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$";
/**
* 是否为正整数数字,包括0(00,01非数字)
*/
public static final String REG_INTEGER_WITH_ZERO_POS = "^(([0-9])|([1-9]([0-9]+)))$";
/**
* 是否为整数数字,包括正、负整数,包括0(00,01非数字)
*/
public static final String REG_NUMBER_WITH_ZERO = "^((-)?(([0-9])|([1-9]([0-9]+))))$";
/**
* 是否为数字字符串
*/
public static final String REG_NUMBER_TEXT = "^([0-9]+)$";
/**
* 数字(整数、0、浮点数),可以判断是否金额,也可以是负数
*/
public static final String REG_NUMBER_ALL = "^((-)?(([0-9])|([1-9][0-9]+))(\\.([0-9]+))?)$";
/**
* 数字和点号
*/
public static final String REG_POINT_NUMBER = "[\\d.]";
/**
*
* @Description: 判断手机号,1开头的11为数
*/
public static boolean phoneNumberValid(String phoneNumber) {
Pattern pattern = Pattern.compile("^1[0-9]{10}$");
Matcher m = pattern.matcher(phoneNumber);
return m.matches();
}
/**
* 正则表达式校验,符合返回True
* @param regex 正则表达式
* @param content 校验的内容
* @return
*/
public static boolean isMatch(String regex, CharSequence content){
return Pattern.matches(regex, content);
}
/**
* 判断是否全部大写字母
* @param str
* @return
*/
public static boolean isUpperCase(String str){
if(StringUtils.isEmpty(str)){
return false;
}
String reg = "^[A-Z]$";
return isMatch(reg,str);
}
/**
* 判断是否全部小写字母
* @param str
* @return
*/
public static boolean isLowercase(String str){
if(StringUtils.isEmpty(str)){
return false;
}
String reg = "^[a-z]$";
return isMatch(reg,str);
}
/**
* 判断是否为数字字符串,如0011,10101,01
* @param str
* @return
*/
public static boolean isNumberText(String str){
if(StringUtils.isEmpty(str)){
return false;
}
return isNumberText(str, REG_NUMBER_TEXT);
}
/**
* 判断是否为数字字符串
* @param str
* @param regexStr 规则
* @return
*/
public static boolean isNumberText(String str, String regexStr){
if(StringUtils.isEmpty(str)){
return false;
}
return isMatch(regexStr, str);
}
/**
* 判断是否为含数字点号字符串,如0011,10101,01
* @param str
* @return
*/
public static boolean isRegPointNumberText(String str){
if(StringUtils.isEmpty(str)){
return false;
}
return isMatch(REG_POINT_NUMBER, str);
}
/**
* 判断所有类型的数字,数字(整数、0、浮点数),可以判断是否金额,也可以是负数
* @param str
* @return
*/
public static boolean isNumberAll(String str){
if(StringUtils.isEmpty(str)){
return false;
}
return isMatch(REG_NUMBER_ALL, str);
}
/**
* 是否为正整数数字,包括0(00,01非数字)
* @param str
* @return
*/
public static boolean isIntegerWithZeroPos(String str){
if(StringUtils.isEmpty(str)){
return false;
}
return isMatch(REG_INTEGER_WITH_ZERO_POS, str);
}
/**
* 是否为整数,包括正、负整数,包括0(00,01非数字)
* @param str
* @return
*/
public static boolean isIntegerWithZero(String str){
if(StringUtils.isEmpty(str)){
return false;
}
return isMatch(REG_NUMBER_WITH_ZERO, str);
}
/**
* 把字符串数字类型的所有数字取出来
* @param str
* <li>"1-000我10123我60#0" 》 100010123600</li>
* <li>"00010-+123我600" 》 00010123600</li>
* <li>"我是2024我600" 》 2024600</li>
* <li>"我是20 -24我 600" 》 2024600</li>
* @return
*/
public static String getNumberText(String str){
return getNumberText(str, "");
}
public static String getNumberText(String str, String defaultNum){
if(StringUtils.isBlank(str)){
return defaultNum;
}
StringBuffer number = new StringBuffer("");
String[] strArray = str.split("");
for (String string : strArray) {
if(!StringUtils.isBlank(string) && isNumberText(string)){
number.append(string);
}
}
return number.toString();
}
/**
* 把字符串数字点号类型的所有数字和点号取出来
* @param str
* <li>"1-0.9.00我10123我60#0" 》 10.9.0010123600</li>
* <li>"V1.0.3" 》 1.0.3</li>
* @return
*/
public static String getRegPointNumberText(String str){
return getRegPointNumberText(str, "");
}
public static String getRegPointNumberText(String str, String defaultPointNum){
if(StringUtils.isBlank(str)){
return defaultPointNum;
}
StringBuffer number = new StringBuffer("");
String[] strArray = str.split("");
for (String string : strArray) {
if(!StringUtils.isBlank(string) && isRegPointNumberText(string)){
number.append(string);
}
}
return number.toString();
}
/**
* <p>
* Description: [用正则表达式来判断一个 URL 是否已有参数]
* <p>
*
* @param url
* @return boolean
*
* ${tags}
*/
public static boolean hasParameters(String url) {
// 正则表达式匹配 URL 中是否有参数
String regex = "\\?.*$";
return Pattern.compile(regex).matcher(url).find();
}
}