Java正则工具类:字母数字下划线、数据库url校验等

2023-11-16


前言

本文内容观摩的是其他作者的代码,在基础上增加修改了一些。
参考原文地址:java用正则表达式


提示:以下是本篇文章正文内容,下面案例可供参考

一、正则基础语法

字符 描述
^ 匹配输入字符串的【开始】位置。(要匹配 ^ 字符本身,请使用 [^])
$ 匹配输入字符串的【结尾】位置
* 匹配前面的子表达式【零次】或【多次】。
+ 匹配前面的子表达式【一次】或【多次】。
? 匹配前面的子表达式【零次】或【一次】。(等价于 {0,1})
{n,m} 匹配前面的子表达式出现【最少n次】,【最多m次】。
- -
. 任意字符
[0-9] 匹配数字0-9
[a-zA-Z] 匹配字母
[a-zA-Z0-9] 匹配字母或数字
[\u4e00-\u9fa5] 匹配中文
- -
(cat竖线dog) 匹配cat或dog

二、正则工具类

直接上代码

package com.zdsoft.datafactory.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StrValidate {

    // 纯数字
    private static String DIGIT_REGEX = "[0-9]+";
    // 含有数字
    private static String CONTAIN_DIGIT_REGEX = ".*[0-9].*";
    // 纯字母
    private static String LETTER_REGEX = "[a-zA-Z]+";
    // 包含字母
    private static String CONTAIN_LETTER_REGEX = ".*[a-zA-z].*";
    // 纯中文
    private static String CHINESE_REGEX = "[\u4e00-\u9fa5]";
    // 仅仅包含字母和数字
    private static String LETTER_DIGIT_REGEX = "^[a-z0-9A-Z]+$";
    private static String CHINESE_LETTER_REGEX = "^[\u4e00-\u9fa5a-zA-Z-z]+";
    private static String CHINESE_LETTER_DIGIT_REGEX = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
    private static String CHINESE_LETTER_Num_REGEX = "^[\u4e00-\u9fa5a-zA-Z-z0-9_]+";
    private static String eng = "^[a-zA-Z][a-zA-Z0-9_]*$";
    private static String noSpace = "\\s*";
    // JDBC:url校验
    private static String JDBC_REGEX = "^jdbc:mysql://[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}:[0-9]{1,5}[/][a-zA-Z-z0-9_]{1,63}";

    /**
     *  验证数据库连接信息URL
     * @param passengerName
     * @return
     */
    public static boolean checkDatabaseUrls(String passengerName) {
        Pattern pattern = Pattern.compile(JDBC_REGEX);
        Matcher matcher = pattern.matcher(passengerName);
        if (matcher.matches()) {
            //符合
            return true;
        } else {
            //不符合
            return false;
        }
    }

    /**
     * 判断字符串是否仅含有数字和字母
     * @param str
     * @return
     */
    public static boolean isLetterDigit(String str) {
        return str.matches(LETTER_DIGIT_REGEX);
    }
    /**
     * 是否为汉字,不包括标点符号
     * @param con
     * @return true 是汉字
     */
    public static boolean isChinese(String con) {
        Pattern pattern = Pattern.compile(CHINESE_REGEX);
        for (int i = 0; i < con.length(); i = i + 1) {
            if (!pattern.matcher(
                    String.valueOf(con.charAt(i))).find()) {
                return false;
            }
        }
        return true;
    }
    /**
     * 用正则表达式判断字符串中是否
     * 仅包含英文字母、数字和汉字
     * @param str
     * @return
     */
    public static boolean isLetterDigitOrChinese(String str) {
        return str.matches(CHINESE_LETTER_DIGIT_REGEX);
    }
    /**
     * 可包含汉字和字母,无其它字符
     * @param passengerName
     * @return
     */
    public static boolean checkChineseLetter(String passengerName) {
        Pattern pattern = Pattern.compile(CHINESE_LETTER_REGEX);
        Matcher matcher = pattern.matcher(passengerName);
        if (matcher.matches()) {
            //不包含特殊字符
            return true;
        } else {
            //包含了特殊字符
            return false;
        }
    }

    /**
     * 可包含汉字、字母、数字、下划线,无其它字符
     * @param passengerName
     * @return
     */
    public static boolean checkChineseLetterAndNum(String passengerName) {
        Pattern pattern = Pattern.compile(CHINESE_LETTER_Num_REGEX);
        Matcher matcher = pattern.matcher(passengerName);
        if (matcher.matches()) {
            //不包含特殊字符
            return true;
        } else {
            //包含了特殊字符
            return false;
        }
    }

    /**
     * 可包含字母、数字、下划线,无其它字符
     * @param passengerName
     * @return
     */
    public static boolean checkEngLetter(String passengerName) {
        Pattern pattern = Pattern.compile(eng);
        Matcher matcher = pattern.matcher(passengerName);
        if (matcher.matches()) {
            //不包含特殊字符
            return true;
        } else {
            //包含了特殊字符
            return false;
        }
    }

    /**
     * 空格检验
     * @param passengerName
     * @return
     */
    public static boolean checkSpace(String passengerName) {
        Pattern pattern = Pattern.compile(noSpace);
        Matcher matcher = pattern.matcher(passengerName);
        if (matcher.matches()) {
            //不包含特殊字符
            return true;
        } else {
            //包含了特殊字符
            return false;
        }
    }


}


总结

冲。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java正则工具类:字母数字下划线、数据库url校验等 的相关文章

  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • 在 Kotlin 中实现返回 Collection 的 Java 方法

    我将 Kotlin 与 Spring Security 结合使用 实现该方法时 public interface UserDetails extends Serializable Collection
  • Java/JAXB:将具有相同名称但不同属性值的 XML 元素解组到不同的类成员

    我正在尝试根据其属性之一将具有多个 Fields 元素的 XML 解析为不同的类成员 这是 XML
  • java“void”和“非void”构造函数

    我用 java 编写了这个简单的类 只是为了测试它的一些功能 public class class1 public static Integer value 0 public class1 da public int da class1 v
  • @PreUpdate 不适用于 Spring Data JPA

    我有一个实体 Entity EntityListeners MyEntityListener class class MyEntity 还有听者 class MyEntityListener PrePersist PreUpdate pub
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 独占锁定ConcurrentHashMap

    我知道不可能锁定 ConcurrentHashMap 进行独占访问 但是 我找不到原因 是因为构成CHM的 Segment 没有被api公开吗 据推测 如果是的话 客户端代码可以执行 交接 锁定 Cheers 我知道不可能锁定 Concur
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • LibGdx 如何使用 OrthographicCamera 滚动?

    我已经找了 10 个小时 字面意思 我已经完成了 我需要问一下 事情是我正在学习如何使用 LibGdx 来编写 Java 游戏 我正在做一个水平太空飞船游戏 所以 我最糟糕的问题是我不知道如何滚动 我认为绘制会更好地解释 我想绘制一个巨大的
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • Java String.format 向整数添加空格

    我有一小段代码 我不明白输出 此输出向我的字符串格式文本添加空格 我做错了什么吗 public class HelloWorld public static void main String args int a1 540 int a2 4
  • 如何在将数据发送到 Firebase 数据库之前对其进行加密?

    我正在使用 Firebase 实时数据库制作聊天应用程序 我知道 Firebase 非常安全 只要您的规则正确 但我自己可以阅读使用我的应用程序的人的所有聊天记录 我想阻止这种情况 为此我需要一种解密和加密方法 我尝试使用凯撒解密 但失败了
  • 当容器大小更改时,JTable 仅调整选定列的大小

    对于面板内的 JTable 如果面板变大 我如何将额外的空间仅分配给某些列 在我的例子中 分配给最后一列 尽管提供 第 3 4 列和8 将获得额外的空间 我想允许用户手动更改所有列的列大小 我尝试了 table setAutoResizeM
  • 嵌入式 tomcat 7 servlet 3.0 注释不起作用

    我有一个精简的测试项目 其中包含 Servlet 版本 3 0 用注释声明 如下所示 WebServlet test public class TestServlet extends HttpServlet private static f
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • Android同步onSensorChanged?

    这是我的问题的后续 Android线程可运行性能 https stackoverflow com questions 36395440 android thread runnable performance 我在理解应用程序的同步方法时遇到
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • 如何使用 Spring AOP 建议静态方法?

    在执行类的静态方法之前和之后需要完成一些日志记录 我尝试使用 Spring AOP 来实现这一点 但它不起作用 而对于正常方法来说它起作用 请帮助我理解如何实现这一点 如果可以使用注释来完成 那就太好了 也许您应该在使用 Spring AO

随机推荐

  • 心电图心跳分类

    目录 背景介绍 数据探索性分析 特征工程 时间序列特征 背景介绍 赛题以医疗数据挖掘为背景 要求选手使用提供的心跳信号传感器数据训练模型并完成不同心跳信号的分类的任务 开源内容 https github com datawhalechina
  • HDU--1247:Hat’s Words (字典树)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1247 2 解题思路 第一次接触字典树 代码也是参考别人的 代码参考博客 http blog csdn net red flame artic
  • [DevEco]解决“XXX“is not translated into en(English) ans zh(Chinese)

    问题描述 其实这个问题如字面意思 你在设置element string json的时候没有进行双语翻译 由于项目是国际版项目有中英双语string json配置文件 问题解决 分别在en element和zh element的string
  • QT---信号与槽机制

    QT 信号与槽机制 信号 signal 槽 slot 槽函数的命名格式 信号与槽的关联 实例1 自动关联 实例2 手动关联 信号 signal 信号是由对象改变状态后发射 emit 出去的事件 例如 一个pushButton 对象 最常见的
  • 一个android项目开发遇到的各种小问题(一)

    1 map格式字符串如何解析 借助json 先将字符串转化为json格式 再取值 JSONObject object new JSONObject posMap clientIden object getString iden 1 andr
  • windows下apache开启FastCGI

    1 在此链接下载一个合适的mod fcgid 文件 64位下载第一个 32位第二个 http www apachelounge com download 2 将解压后将文件中的 mod fcgid so 复制到apache的modules目
  • 用ProGuardGui混淆多个有依赖关系的项目,亲测有效

    前提 公司要混淆代码 A项目依赖B项目 要整体混淆AB这两个项目 步骤1 把AB两个项目通过maven命令打成同一个jar包 在pom文件里添加如下 执行maven命令语句 assembly assembly
  • SqueezeNet算法解析—鸟类识别—Paddle实战

    文章目录 一 理论基础 1 前言 2 设计理念 2 1 CNN微架构 CNN MicroArchitecture 2 2 CNN宏架构 CNN MacroArchitecture 2 3 模型网络设计探索过程 2 4 结构设计策略 2 5
  • Qt下载(多种下载通道+所有版本)

    Qt 体积很大 有 1GB 3GB 官方下载通道非常慢 相信很多读者会崩溃 所以建议大家使用国内的镜像网站 较快 或者使用迅雷下载 很快 作为 Qt 下载教程 本文会同时讲解以上三种下载方式 Qt 官方下载 非常慢 Qt 官网有一个专门的资
  • Qt CSV文件的创建,读写操作

    文章目录 一 CSV文件介绍 二 创建CSV文件 三 写入CSV文件 四 读取CSV文件 一 CSV文件介绍 逗号分隔值 Comma Separated Values CSV 有时也称为字符分隔值 因为分隔字符也可以不是逗号 其文件以纯文本
  • scala和spark的下载与安装

    简易安装scala和spark 一 安装scala 1 安装scala scala下载注意和jdk的版本号 下载地址 https www scala lang org download 2 上传到linux虚拟机里 可通过rz方式上传 上传
  • 量化交易是如何实现的?

    前面我们讲到 其实最简单的量化交易 就是定投 设置好标的 时间 金额 那么不需自己动手 就可以按照设置的策略进行定投 这就是量化交易的最初形态 那么 为了实现更加复杂一些的交易 比如说 选股 买卖点位的确定 追踪实时行情等 应该怎么去实现呢
  • Python_数据读取_读取单个csv文件和批量读取csv文件

    读取单个csv pd read csv 直接读取单个csv文件通过pd read csv 函数直接在指定路径进行文件读取 需要利用Pandas包 其中 1 路径前的r表示路径符号不转义 window操作系统下不再用调整 为 或 进行文件读取
  • spark dataframe 数据类型转换

    文章目录 1 spark sql数据类型 数字类型 日期类型 复杂类型 2 spark sql和scala数据类型对比 3 spark sql数据类型转换示例 代码 输出 1 spark sql数据类型 数字类型 ByteType 代表一个
  • 解决连接腾讯云Ubuntu服务器,使用Xshell和WinSCP无法直接用root用户登陆

    发现腾讯云服务器登入只能用ubuntu用户名登入 但是无法使用root登录 下面是解决方法 1 首先使用Xshell用ubuntu用户进入系统 输入命令 sudo passwd Enter new UNIX password 然后输入密码
  • 没有权限删除文件

    通过远程发版时 有可能会没有权限删除文件 如下解决方法 1 将user 用户切换root 用户 sudo su root 该方法不一定成功 因为有可能设置权限你不能切换 但成功以后一劳永逸 当方法1没有成功时 采用如下方法 2 将你所操作的
  • 网络请求-登录

    post请求的header中发送本地存储的token 校验服务器中是否存在
  • jsbridge原理_Hybrid App技术解析 -- 原理篇

    引言 随着 Web 技术和移动设备的快速发展 Hybrid 技术已经成为一种最主流最常见的方案 一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能 同时也能拥有 Web技术 灵活的开发模式 跨平台能力以及热更新机制 想想
  • FLatten Transformer 简化版Transformer

    今天在找论文时 看到一篇比较新奇的论文 在这里跟大家分享一下 希望可以给一些人提供一些思路 虽然现在Transformer 比较火 在分割上面也应用的比较多 但是我一直不喜欢用 其中一个原因是结构太复杂了 平时我主要用一个sel atten
  • Java正则工具类:字母数字下划线、数据库url校验等

    文章目录 前言 一 正则基础语法 二 正则工具类 总结 前言 本文内容观摩的是其他作者的代码 在基础上增加修改了一些 参考原文地址 java用正则表达式 提示 以下是本篇文章正文内容 下面案例可供参考 一 正则基础语法 字符 描述 匹配输入