正则表达式

正则表达式

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

正则表达式(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

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

相关推荐
cs_dn_Jie1 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
测开小菜鸟1 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
开心工作室_kaic2 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿2 小时前
webWorker基本用法
前端·javascript·vue.js
P.H. Infinity2 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天2 小时前
java的threadlocal为何内存泄漏
java
caridle3 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^3 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花3 小时前
【JAVA基础】Java集合基础
java·开发语言·windows