【Java】正则表达式基础题+场景题练习

基础语法可以看我另一篇博客:正则表达式【规则】【实例】【技巧】_正则规则-CSDN博客

输出结果全是true

public class StringRegexTest {public static void main(String[] args) {System.out.println(matchSingleNum("1"));System.out.println(matchMultiNum("123"));System.out.println(matchSingleLetter("a"));System.out.println(matchMultiLetter("abc"));System.out.println(matchLetterOrNum("abc123abc"));System.out.println(matchAppointLength("abc12abc", 8));System.out.println(matchEmail("1423sdaf23@16sdf.com"));System.out.println(matchURL("https://blog.csdn.net/lklalmq/article/details/136012146?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522bb9e340f647a3193fa75a3234c345784%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=bb9e340f647a3193fa75a3234c345784&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136012146-null-null.nonecase&utm_term=%E6%AD%A3%E5%88%99&spm=1018.2226.3001.4450"));System.out.println(matchEmpty(" "));System.out.println(matchNotEmpty("是"));System.out.println(matchStart("Hello World", "Hello"));System.out.println(matchEnd("Hello World", "World"));System.out.println(matchContains("Hello World", "o W"));System.out.println(matchContainsIgnoreCase("Hello World", "O w"));System.out.println(matchPhone("13232323232"));System.out.println(matchDateTime("2024-01-01 12:00:00"));System.out.println(matchLocalDateTime(LocalDateTime.now().toString()));System.out.println(matchRgbColor("#F02EAF"));System.out.println(matchNotContains("123abc123ab123", "4"));System.out.println(matchRepeat("abbc"));System.out.println(matchMid("Hello World", "llo"));System.out.println(matchWord("&%d break 23"));System.out.println(matchOptional("Hello World", "World"));System.out.println(matchIdCard("332613202302291982"));System.out.println(matchWeakPassword("qwe123"));System.out.println(matchMidPassword("qweASD123"));System.out.println(matchStrongPassword("^&*daf123*&Ss"));System.out.println(matchFileName("application.properties"));System.out.println(matchIPv4("000.000.000.000"));System.out.println(matchChinese("黄小桃"));}// 匹配一个数字public static Boolean matchSingleNum(String str){String regex = "\\d";return str.matches(regex);}// 匹配多个连续数字public static Boolean matchMultiNum(String str){String regex = "\\d+";return str.matches(regex);}// 匹配一个字母,不区分大小写public static Boolean matchSingleLetter(String str){String regex = "[a-zA-Z]";return str.matches(regex);}// 匹配多个字母,不区分大小写public static Boolean matchMultiLetter(String str){String regex = "[a-zA-Z]+";return str.matches(regex);}// 匹配多个字母或数字public static Boolean matchLetterOrNum(String str){String regex = "[a-zA-Z0-9]+";return str.matches(regex);}// 匹配特定长度的字符串public static Boolean matchAppointLength(String str, int length){String regex = ".{" + length + "}";return str.matches(regex);}// 匹配基本的邮箱地址// 邮箱的格式:用户名@域名// 用户名:一般6-18位,由大小写字母、数字、下划线、点、加减号、百分号组成// 二级域名:至少1位,由大小写字母、数字、点、连字符组成// 顶级域名:至少2位,由大小写字符组成,当然也有很多新的顶级域名可以是数字public static Boolean matchEmail(String str){String regex = "[\\w.%+-]{6,18}@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9]{2,}";return str.matches(regex);}// 匹配URL// URL的格式:协议://域名/路径?参数// 协议:http或https// 二级域名:至少1位,由大小写字母、数字、点、连字符组成// 顶级域名:至少两位,由大小写字符、数字组成// 路径:可选,以 / 开头,由除了\n之外的任意字符组成,也可能位空// 参数:可选,以 ? 开头,由大小写字母、数字、+-._%&=组成,也可能为空// 注意:正则表达式中,\n是匹配换行符的,所以在路径中不能出现\n\r\f等空白字符public static Boolean matchURL(String str){String regex = "(http://|https://)[a-zA-Z0-9.-]+\\.[a-zA-Z0-9]{2,}(/.*)*(\\?[\\w.%&+-=]*)?";return str.matches(regex);}// 匹配一个空白字符,包括空格、制表符、换行符、回车符、换页符等public static Boolean matchEmpty(String str){String regex = "[\\x20\\t\\n\\r\\f]";return str.matches(regex);}// 匹配非空字符public static Boolean matchNotEmpty(String str){String regex = "[^\\s]"; // 或者\\Sreturn str.matches(regex);}// 匹配字符串开头public static Boolean matchStart(String str, String start){String regex = "^" + start + ".*";return str.matches(regex);}// 匹配字符串结尾public static Boolean matchEnd(String str, String end){String regex = ".*" + end + "$";return str.matches(regex);}// 匹配包含特定子串public static Boolean matchContains(String str, String mid){String regex = ".*" + mid + ".*";return str.matches(regex);}// 匹配包含特定子串,不区分大小写// (?i) 标志,表示忽略大小写,需要配合Pattern类、Matcher类使用public static Boolean matchContainsIgnoreCase(String str, String mid){String regex = "(?i).*" + mid + ".*";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(str);return matcher.find();}// 匹配电话号码// 御三家电话号码的格式:1XX-XXXX- XXXX// 分为三段,第一段的前三位是网络识别号,以1开头,第二位3 - 9// 第二段是四位地区编号,第三段是四位用户号码public static Boolean matchPhone(String str){String regex = "1[3-9]\\d{9}";return str.matches(regex);}// 匹配日期时间// 日期时间的格式:YYYY-MM-DD HH:MM:SSpublic static Boolean matchDateTime(String str){String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";return str.matches(regex);}// 匹配java的LocalDateTime.now().toString()生成的时间字符串// 格式:YYYY-MM-DDTHH:mm:ss.SSSpublic static Boolean matchLocalDateTime(String str){String regex = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}";return str.matches(regex);}// 匹配十六进制RGB格式颜色// 格式:#RRGGBB 或 #RGBpublic static Boolean matchRgbColor(String str){String regex = "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})";return str.matches(regex);}// 匹配不包含特定字符的字符串public static Boolean matchNotContains(String str, String notContains){String regex = ".*(?!" + notContains + ")*.*";return str.matches(regex);}// 匹配重复两次的字符public static Boolean matchRepeat(String str){String regex = ".*(.)\\1.*";return str.matches(regex);}// 匹配字符中间的字符,不包括首尾public static Boolean matchMid(String str, String mid){String regex = ".+" + mid + ".+";return str.matches(regex);}// 匹配一个单词public static Boolean matchWord(String str){String regex = ".*\\b[a-zA-Z]+\\b.*";return str.matches(regex);}// 匹配以特定字符开头和结尾的字符串public static Boolean matchStartAndEnd(String str, String start, String end){String regex = Pattern.quote(start) + ".*" + Pattern.quote(end);return str.matches(regex);}// 匹配可选字符public static Boolean matchOptional(String str, String optional){String regex = "Hello " + "(" + optional + ")?"; // 或者 "Hello(?:" + optional + ")"return str.matches(regex);}// 匹配身份证号// 格式:地址码6位 + 出生日期8位 + 顺序码3位 + 校验码1位// 地址码:省份代码2位 + 城市代码2位 + 区县代码2位// 顺序码:区分同一天内出生的人,奇数代表男性,偶数代表女性// 校验码:根据前17位通过特定算法计算得到,校验身份证号的正确性// 首位不能为0,二代身份证号18位是从1999年10月1号开始的,一代更早,15位// 不考虑平年闰年导致的2月份28天还是29天的问题public static Boolean matchIdCard(String str){String regex = "[1-9]\\d{5}(19|20)\\d{2}((0[13456789]|1[0-2])(0[1-9]|[12]\\d|30|31)|(02(0[1-9]|1\\d|2[0-9])))\\d{3}[\\dXx]";return str.matches(regex);}// 匹配银行卡号public static Boolean matchBankCard(String str){String regex = "\\d{13,19}";return str.matches(regex);}// 匹配弱密码// 长度 < 8,只包含数字,纯小写或者纯大写字母public static Boolean matchWeakPassword(String str){String regex = "[a-z0-9]|[a-z0-9]{0,7}";return str.matches(regex);}// 匹配中等密码// 长度 >= 8,至少包含一个大写字母、一个小写字母,一个数字public static Boolean matchMidPassword(String str){String regex = "(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[a-zA-Z0-9]{8,}";return str.matches(regex);}// 匹配强密码// 长度 >= 8, 至少包含一个大写字母,一个小写字母,一个数字,一个特殊字符public static Boolean matchStrongPassword(String str){String regex = "(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()\\-+_=])[A-Za-z\\d!@#$%^&*()\\-+_=]{8,}";return str.matches(regex);}// 匹配XML、JSON、YAML、HTML、CSS、JS、Properties等文件名// 格式:文件名.后缀名// 文件名:不能包含\ / : * ? " < > |public static Boolean matchFileName(String str){String regex = "[^\\/:*?\"<>|]+\\.[a-zA-Z0-9]+";return str.matches(regex);}// 匹配IPv4地址// 格式:0.0.0.0 - 255.255.255.255// 如果格式为 000.000.000.000,- 255.255.255.255// 则regex应该这么写:// (25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)public static Boolean matchIPv4(String str){String regex = "([0-1]?[0-9]?[0-9]|2[0-4]\\d|25[0-5])(\\.([0-1]?[0-9]?[0-9]|2[0-4]\\d|25[0-5])){3}";return str.matches(regex);}// 匹配中文字符// Unicode的汉字编码范围:U+4E00 - U+9FA5public static Boolean matchChinese(String str){String regex = "[\\u4e00-\\u9fa5]+";return str.matches(regex);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51c嵌入式~单片机~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、STM32代码远程升级之IAP编程 IAP是什么 有时项目上需要远程升级单片机程序&#xff0c;此时需要接触到IAP编程。 IAP即为In Application Programming&#xff0c;解释为在应用中编程&#xff0c;用户自己的…

Spring Boot 集成 Elasticsearch怎样在不启动es的情况下正常启动服务

解释 在spingboot 集成es客户端后&#xff0c;每当服务启动时&#xff0c;服务默认都会查看es中是否已经创建了对应的索引&#xff0c;如果没有索引则创建。基于上面的规则我们可以通过配置不自动创建索引来达到在没有es服务的情况下正常启动服务。 解决办法 在entity类的Docu…

Linux在Ubuntu系统下安装MySQL数据库(全网最详细)

1.在ubuntu下安装MySQL数据库 第一步要先&#xff1a;切换到root用户 以我自己的为例&#xff08;自行输入密码&#xff09; ljwVM-16-16-ubuntu:~$ su - 1.1 查看操作系统版本 rootVM-16-16-ubuntu:~# lsb_release -a 1.2 添加MySQL APT源 1.2.1 访问下载⻚⾯并下载发布包…

vs code 2024编译环境问题记录

之前vs code环境配置了好一会&#xff0c;现在将遇到的问题记录一下&#xff0c;并贴上解决方法。 在这之前&#xff0c;关键的gcc编译器竟然在Python生成exe的过程中不小心下载了Mingw64&#xff0c;然后导致gcc编译器已经安装好在某个目录下了 命令行查看发现&#xff0c;原…

linux网络编程 | c | epoll实现IO多路转接服务器

epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能&#xff1a;**客…

植物大战僵尸辅助【控制台版本】

前面介绍了使用CE和OD的简单使用&#xff1a;CE和OD介绍和使用CE查找阳光的教学&#xff1a;阳光基地址和偏移地址&#xff0c;下面先使用最简单的控制台程序来实现修改阳光的功能。 项目地址 1.分析程序 我们的控制台程序想要修改植物大战僵尸游戏内的数据&#xff0c;它们…

elasticsearch 使用Painless脚本

文章目录 1. 创建索引2. 插入模拟数据Painless 脚本的基本特点&#xff1a;Painless 脚本的常见用途1. 脚本查询和过滤示例&#xff1a;基于脚本的查询 2. 脚本字段示例&#xff1a;脚本字段 3. 聚合中的脚本示例&#xff1a;脚本聚合 4. 文档更新中的脚本示例&#xff1a;文档…

【Elasticsearch】高亮搜索:从原理到Web呈现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

15.初始接口1.0 C#

这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】&#xff08;文心一言AI生成&#xff09; 在C#编程世界中&#xff0c;接口&#xff08;Interface&#xff09;扮演着至关重要的角色&#xff0c;它定义了一组方法&#xff0c;但不提供这些方法的实现。接口作为…

Day9 神经网络的偏导数基础

多变量函数与神经网络 在神经网络中&#xff0c;我们经常遇到多变量函数。这些函数通常描述了网络的输入、权重、偏置与输出之间的关系。例如&#xff0c;一个简单的神经元输出可以表示为&#xff1a; z f ( w 1 x 1 w 2 x 2 … w n x n b ) z f(w_1x_1 w_2x_2 \ldots…

map和set题目练习

一、习题一&#xff1a;随机链表的复制 1.1题目详情 1.2思路 在没有学习map和set之前&#xff0c;解决这道题最大的问题就在于无法建立原链表与拷贝链表的映射关系&#xff0c;只能通过在原链表每个节点后面新建一个新的链表来进行节点间的对应&#xff0c;而学习了map之后&a…

C语言入门(一):A + B _ 基础输入输出

前言 本专栏记录C语言入门100例&#xff0c;这是第&#xff08;一&#xff09;例。 目录 一、【例题1】 1、题目描述 2、代码详解 二、【例题2】 1、题目描述 2、代码详解 三、【例题3】 1、题目描述 2、代码详解 四、【例题4】 1、题目描述 2、代码详解 一、【例…

渗透测试学习笔记(五)网络

一.IP地址 1. IP地址详解 ip地址是唯一标识&#xff0c;一段网络编码局域网&#xff08;内网&#xff09;&#xff1a;交换机-网线-pcx.x.x.x 32位置2进制&#xff08;0-255&#xff09; IP地址五大类 IP类型IP范围A类0.0.0.0 到 127.255.255.255B类128.0.0.0 到191.255.25…

《自制编译器》--青木峰郎 -读书笔记 编译hello

在该书刚开始编译hello.cb时就遇到了问题。 本人用的是wsl&#xff0c;环境如下&#xff0c; 由于是64位&#xff0c;因此根据书中的提示&#xff0c;从git上下载了64位的cb编译器 cbc-64bit 问题一: 通过如下命令编译时,总是报错。 cbc -Wa,"--32" -Wl,"-…

jedis使用及注意事项

Jedis Jedis 是一个 Java 客户端&#xff0c;用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API&#xff0c;使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下&#xff1a;…

浏览器执行机制

主线程 任务1&#xff0c;任务2 微队列微队列任务1&#xff0c; 微队列任务2延时队列延时队列任务1&#xff0c; 延时队列任务2交互队列.... 事件循环的工作原理 主线程执行同步任务&#xff1a; 主线程首先执行所有同步任务&#xff08;即栈中的任务&#xff09;。这些任务会…

Java 基础知识——part 4

8.成员方法&#xff1a;Java中必须通过方法才能对类和对象的属性操作&#xff1b;成员方法只在类的内部声明并加以实现。一般声明成员变量后再声明方法。 9.方法定义 方法的返回值是向外界输出的信息&#xff0c;方法类型和返回值类型同&#xff1b;返回值通过return返回&…

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件&#xff1a;C/S系统、Winform桌面应用软件。 运行平台&#xff1a;Windows .NETCore&#xff0c;.NET8 开发工具&#xff1a;Visual Studio 2022&#xff0c;C#语言 数据库&#xff1a;Microsoft SQLServer 2012&#xff0c;Oracle 21c&#xff0c;MySQL8&#xf…

监控易 IDC 数据中心一体化智能运维平台:新质生产力的典范

一、引言 在当今数字化飞速发展的时代&#xff0c;IDC 数据中心作为信息产业的核心基础设施&#xff0c;其稳定、高效运行对于企业和社会的重要性不言而喻。随着数据量的爆炸式增长和业务复杂度的提升&#xff0c;传统的运维模式已难以满足需求&#xff0c;数据中心面临着诸多挑…

busybox学习——简单介绍

文章目录 简介官网源码目录结构构建 简介 BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils &#xff0c; shellutils等工具&#xff0c;BusyBox提供了一个比较完善的环境&#xff0c;可以适用于任…