正则表达式

正则表达式

正则表达式的概念和定义:

正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串模式的表达式,它提供了一种强大的搜索、匹配和替换文本的方式。正则表达式是由字符和特殊字符组成的字符串,用于定义文本中的搜索模式。

在Java中,正则表达式主要通过java.util.regex包来实现。常用的类包括Pattern和Matcher。

2. 正则表达式的语法及常用例子:

2.1. 基本字符匹配:
  • . :匹配任意单个字符
  • \d:匹配数字
  • \w:匹配字母、数字、下划线
  • \s:匹配空白字符
2.2. 字符类:
  • [abc]:匹配a、b或c中的一个字符
  • [^0-9]:匹配非数字字符
2.3. 重复匹配:
  • a*:匹配0个或多个a
  • b+:匹配1个或多个b
  • c?:匹配0个或1个c
2.4. 锚点:
  • ^:匹配字符串的开始
  • $:匹配字符串的结束
2.5. 分组和引用:
  • (abc):捕获组,匹配abc并记住
  • \1:引用第一个捕获组的内容
2.6. 范围:
  • [0-9]:匹配0到9之间的数字
  • [a-z]:匹配小写字母
2.7. 转义字符:
  • \\:匹配反斜杠字符本身
  • \.:匹配点号字符本身
2.8. 预定义字符类:
  • \b:匹配单词边界
  • \d:匹配数字字符
  • \D:匹配非数字字符
  • \w:匹配字母、数字、下划线
  • \W:匹配非字母、数字、下划线
  • \s:匹配空白字符
  • \S:匹配非空白字符
2.9. 零宽断言:
  • (?=...):正向肯定预查
  • (?!...):正向否定预查
  • (?<=...):反向肯定预查
  • (?<!...):反向否定预查
2.10. 贪婪与非贪婪:
  • .*:贪婪匹配
  • .*?:非贪婪匹配

java示例:

java 复制代码
import java.util.regex.*;

public class RegexExamples {
    public static void main(String[] args) {
        String input = "abc123xyz";

        // 示例1:匹配数字
        String pattern1 = "\\d+";
        System.out.println(Pattern.matches(pattern1, input));

        // 示例2:匹配单词边界
        String pattern2 = "\\babc\\b";
        System.out.println(Pattern.matches(pattern2, input));

        // 示例3:捕获组
        String pattern3 = "(\\w+)(\\d+)";
        Pattern p = Pattern.compile(pattern3);
        Matcher m = p.matcher(input);
        if (m.find()) {
            System.out.println("Group 1: " + m.group(1));
            System.out.println("Group 2: " + m.group(2));
        }

        // ... 更多示例
    }
}

补充正则表达式常用的例子:

1. 匹配只能使用数字、英文以及下划线的字符串:
java 复制代码
String pattern = "^[a-zA-Z0-9_]+$";
  • 解释:^ 表示匹配字符串的开始,a-zA-Z0-9_ 表示字符集合,+ 表示匹配一个或多个字符,$ 表示匹配字符串的结束。
2. 匹配邮箱地址:
java 复制代码
String pattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
  • 解释:匹配邮箱地址的常见规则,包括用户名部分和域名部分。
3. 匹配URL:
java 复制代码
String pattern = "^(http|https)://[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+(\\/\\S*)?$";
4. 匹配日期(YYYY-MM-DD):
java 复制代码
String pattern = "^\\d{4}-\\d{2}-\\d{2}$";
  • 解释:匹配形如YYYY-MM-DD的日期格式。
5. 匹配手机号码:
java 复制代码
String pattern = "^1[3456789]\\d{9}$";
  • 解释:匹配手机号码。
JavaScript中的使用示例:

在JavaScript中,正则表达式同样常用于字符串的匹配和处理。以下是在JavaScript中使用上述正则表达式的示例:

javascript 复制代码
// 示例1:匹配只能使用数字、英文以及下划线的字符串
var pattern1 = /^[a-zA-Z0-9_]+$/;
console.log(pattern1.test("abc123")); // true
console.log(pattern1.test("abc@123")); // false

// 示例2:匹配邮箱地址
var pattern2 = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(pattern2.test("user@example.com")); // true
console.log(pattern2.test("invalid-email")); // false

// 示例3:匹配URL
var pattern3 = /^(http|https):\/\/[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+(\/\S*)?$/;
console.log(pattern3.test("https://www.example.com")); // true
console.log(pattern3.test("invalid-url")); // false

// 示例4:匹配日期(YYYY-MM-DD)
var pattern4 = /^\d{4}-\d{2}-\d{2}$/;
console.log(pattern4.test("2022-01-30")); // true
console.log(pattern4.test("invalid-date")); // false

// 示例5:匹配手机号码
var pattern5 = /^1[3456789]\d{9}$/;
console.log(pattern5.test("13812345678")); // true
console.log(pattern5.test("invalid-phone")); // false
// test(str):判断指定字符串是否符合规则,返回true或false

如果觉得有帮助,请帮我点个赞或者收藏,感谢~

相关推荐
程序员大阳13 分钟前
HTML+CSS+JS对话式实战(6)-学生端查看活动功能开发
javascript·css·html·模块·查看学生
Flynn Liang19 分钟前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
噢,我明白了1 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff2 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶2 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David3 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农3 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
学长毕设3 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
SimonKing4 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent响应SSE实时流式传输案例实战
java·人工智能·ai·sse·springai