正则表达式

文章目录

正则表达式

正则表达式(Regular Expression,简称Regex或RegExp)是一种对字符串操作的一种逻辑公式,它是用事先定义好的一些特定字符以及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式主要用于字符串的验证、搜索和替换。
1.正则表达式的组成

正则表达式由普通字符(如a到z的字母)和特殊字符(称为"元字符")组成。元字符在正则表达式中具有特殊的含义,用于表示位置、重复、选择等。
2.元字符介绍

字符匹配

.:匹配除换行符以外的任意单个字符。

...\]:字符集合,匹配方括号内的任意字符。例如,\[abc\]匹配a、b或c。 \[\^...\]:否定的字符集合,匹配不在方括号内的任意字符。 位置指定 \^:匹配输入字符串的开始位置。 KaTeX parse error: Undefined control sequence: \\b at position 16: :匹配输入字符串的结束位置。 \\̲b̲:匹配一个单词边界,即单词的开...:匹配整个字符串为5到12位数字。 匹配IP地址: ((25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)\\.){3}(25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?) 匹配电话号码: (?0\\d{2}\[) -\]?\\d{8} **4、正则表达式的使用** 正则表达式在不同的编程语言中有不同的实现方式,但基本原理相同。以下是在一些常见编程语言中使用正则表达式的简单示例: JavaScript: let regex = /^\d{5,12}$/; let result = regex.test("12345678901"); // true Python: import re pattern = re.compile(r'^\d{5,12}$') result = pattern.match("12345678901") if result: print("Match") Java: String regex = "^\\d{5,12}$"; boolean result = "12345678901".matches(regex); // true 正则表达式是一个功能强大的工具,能够处理复杂的文本匹配问题。然而,由于其语法较为复杂,对于初学者来说可能需要一定的时间来掌握。 常见应用 搜索文本:在文本中查找符合特定模式的子字符串。 文本替换:根据正则表达式匹配结果替换文本。 输入验证:验证输入是否符合特定格式,如邮箱、电话号码等。 数据提取:从文本中提取特定模式的数据。 ### Java中常用的正则 在Java中,正则表达式(Regular Expressions)是一种强大的文本处理工具,它允许你通过指定模式来匹配、搜索、替换文本。Java的java.util.regex包提供了对正则表达式的支持,主要类有Pattern和Matcher。 以下是一些常用的正则表达式示例,这些示例涵盖了常见的文本处理需求: 匹配电子邮件地址: \\b\[A-Za-z0-9._%±\]+@\[A-Za-z0-9.-\]+\\.\[A-Z\|a-z\]{2,}\\b 匹配URL: https?😕/(?:\[-\\w\\.\]\|(?:%\[\\da-fA-F\]{2}))+ 匹配IP地址(IPv4): ((25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?)\\.){3}(25\[0-5\]\|2\[0-4\]\[0-9\]\|\[01\]?\[0-9\]\[0-9\]?) 匹配手机号码(以中国大陆11位手机号为例): \^1\[3-9\]\\d{9}$ 匹配身份证号码(中国大陆18位身份证号码): ^[1](#1)^\\d{5}(18\|19\|20)\\d{2}((0\[1-9\])\|(10\|11\|12))((\[0-2\]\[1-9\])\|10\|20\|30\|31)\\d{3}\[\\dXx\]$ 匹配整数: -?\\d+ 匹配浮点数(包括正数、负数和小数): -?\\d+(\\.\\d+)? 匹配中文字符: \[\\u4e00-\\u9fa5

匹配由数字和字母组成的字符串:

A-Za-z0-9\]+ 匹配HTML标签: \<(\[a-z\]+)(\[\^\<\]+)*(?:\>(.* )\\|\\s\*\\/\>) 请注意,正则表达式的编写依赖于你的具体需求,上述示例可能需要根据实际情况进行调整。 在Java中使用这些正则表达式时,你通常会首先使用Pattern.compile(String regex)方法编译正则表达式,然后使用matcher(CharSequence input)方法创建一个Matcher对象,最后使用Matcher对象的方法来执行匹配、查找等操作。例如: String email = "[email protected]"; String emailRegex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b"; Pattern pattern = Pattern.compile(emailRegex); Matcher matcher = pattern.matcher(email); boolean isEmail = matcher.matches(); // 判断是否匹配 ### RegexUtils import java.util.regex.Pattern; /** * 正则工具类 * * @author jjee */ public class RegexUtils { /** * 校验正则表达式是否合法 */ public static boolean checkRegx(String regx) { try { Pattern.compile(regx); return true; } catch (Exception e) { return false; } } /** * 判断是否为整数 * @param str 传入的字符串 * @return 是整数返回true,否则返回false */ public static boolean isInteger(String str) { Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); return pattern.matcher(str).matches(); } //正则表达式判断字符串是否仅含有数字和字母和中文 public static boolean isLetterDigit(String str) { String regex = "^[\\u4e00-\\u9fa50-9a-zA-Z]+$"; return str.matches(regex); } //正则表达式判断字符串是否仅英文字符 public static boolean isAandZ(String str) { String regex = "^[a-zA-Z]*"; return str.matches(regex); } //正则表达式判断字符串是否仅含有数字和字母 public static boolean isAandZandNum(String str) { String regex = "^[0-9a-zA-Z]+$"; return str.matches(regex); } } *** ** * ** *** 1. 1-9 [↩︎](#↩︎)

相关推荐
zy happy5 分钟前
搭建运行若依微服务版本ruoyi-cloud最新教程
java·spring boot·spring cloud·微服务·ruoyi
芯眼13 分钟前
STM32启动文件详解(重点)
java·开发语言·c++·stm32·单片机·mybatis
想躺平的小农1 小时前
EasyExcel详解
java
慧一居士1 小时前
EasyExcel集成使用总结与完整示例
java·excel
呦呦彬1 小时前
【问题排查】easyexcel日志打印Empty row!
java·开发语言·log4j
九章云极AladdinEdu1 小时前
GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践
java·开发语言·人工智能·深度学习·测试工具·负载均衡·transformer
佩奇的技术笔记1 小时前
Java学习手册:客户端负载均衡
java·负载均衡
可乐加.糖2 小时前
项目版本管理和Git分支管理方案
java·git·目标跟踪·gitlab·敏捷流程·源代码管理
wowocpp2 小时前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
繁依Fanyi3 小时前
我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
java·pdf·uni-app·生活·harmonyos·codebuddy首席试玩官