正则表达式

正则表达式

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

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

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

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

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

相关推荐
zzz_23684 分钟前
【Java基础】链表的七十二变——从LRU缓存到手写浏览器前进后退
java·链表·缓存
番茄去哪了7 分钟前
神领物流面试题(一)
java·大数据·中间件
云烟成雨TD8 分钟前
Agent Scope Java 2.x 系列【9】接入高德 MCP 服务
java·人工智能·agent
智码看视界11 分钟前
老梁聊全栈:JavaScript 原型链深入探索对象继承的奥秘
前端·javascript·ecmascript
智码看视界12 分钟前
老梁聊全栈系列 JavaScript语言本质:从原型链到异步编程的深度解析
开发语言·javascript·全栈·javascript核心
gaohe26AIliuzeyu26 分钟前
Java内部类
java·开发语言
西安邮电大学30 分钟前
有关数组的经典算法题
java·后端·其他·算法·面试
互联网推荐官34 分钟前
上海AI Agent智能体开发公司技术选型实录:六条路径、三类架构与真实落地约束
java·人工智能·ai·架构·开发经验·上海
mikasa66741 分钟前
关于Spring MVC 基于 AOP 实现的全局控制器统一处理方案@ControllerAdvice
java·spring·mvc
一 乐42 分钟前
幼儿园管理系统|基于springboot + vue幼儿园管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·幼儿园管理系统