当前位置: 首页 > article >正文

使用正则表达式验证积累

使用正则表达式验证积累



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();
    }
}


http://www.kler.cn/a/374164.html

相关文章:

  • 微信小程序服务通知
  • mac-ubuntu虚拟机(扩容-共享-vmtools)
  • Android 复习Path.Op.DIFFERENCE
  • Redis 集群 问题
  • 计算机网络网络层笔记
  • ETL集成工具丨如何运用ETLCloud单步调试断点功能
  • springSecurity入门(5.7版本之前)
  • 各种语言的列表推导式与三元?表达式,C++,python,rust,swift,go
  • ubuntu20.04 加固方案-设置重复登录失败后锁定时间限制
  • flutter_vscode常用快捷键
  • Spring Boot租房管理系统:功能实现与优化
  • 美团嵌入式面试题及参考答案(无人机团队)
  • 云-转录组平台升级解锁更多实用交互式功能
  • 【React 的理解】
  • java小白到架构师技术图谱
  • 流媒体转发服务器的应用场景与原理
  • Linux——五种IO模型
  • linux命令之top(Linux Command Top)
  • day14:RSYNC同步
  • 第72期 | GPTSecurity周报
  • 书生-第四期闯关:完成SSH连接与端口映射并运行hello_world.py
  • 如何使用 Vue CLI 创建 Vue 项目?
  • Java迭代器:深入理解与应用
  • 二百七十四、Kettle——ClickHouse中对错误数据表中进行数据修复(实时)
  • Spark集群管理脚本详解
  • 【数据结构-邻项消除】力扣2211. 统计道路上的碰撞次数