基础语法

正则表达式是强大的文本匹配工具,用于查找、替换或验证字符串中的特定模式。

什么是正则表达式?

正则表达式是由普通字符和特殊字符组成的模式,用于描述字符串的匹配规则。

简单示例:
hello - 匹配字符串 "hello"
\d - 匹配任意数字
[a-z] - 匹配任意小写字母

基本组成部分

  • 普通字符:直接匹配字符本身
  • 元字符:具有特殊含义的字符
  • 量词:指定匹配次数
  • 字符类:匹配一组字符中的任意一个

元字符

元字符是正则表达式中具有特殊含义的字符。

常用元字符:
. - 匹配除换行符外的任意字符
^ - 匹配字符串开始
$ - 匹配字符串结束
* - 匹配前面的元素0次或多次
+ - 匹配前面的元素1次或多次
? - 匹配前面的元素0次或1次

量词

量词指定字符或分组应该匹配的次数。

常用量词:
{n} - 精确匹配n次
{n,} - 匹配n次或更多
{n,m} - 匹配n到m次之间

字符类

字符类允许您匹配一组字符中的任意一个字符。

常用字符类:
[abc] - 匹配 a、b 或 c
[a-z] - 匹配任意小写字母
[0-9] - 匹配任意数字
[^abc] - 匹配除 a、b、c 外的任意字符

分组

分组允许您对多个字符应用量词并捕获匹配的文本。

分组示例:
(abc) - 将 "abc" 作为一个组匹配
(abc)+ - 匹配一个或多个 "abc" 组
(a|b) - 匹配 "a" 或 "b"

锚点

锚点指定匹配应该在字符串中的哪个位置发生。

常用锚点:
^ - 字符串开始
$ - 字符串结束
\b - 单词边界
\B - 非单词边界

标志

标志修改正则表达式的解释方式。

常用标志:
g - 全局匹配(查找所有匹配)
i - 不区分大小写
m - 多行模式
s - 点号匹配换行符

高级技巧

用于复杂模式匹配的高级正则表达式技巧。

高级模式:
(?=pattern) - 正向先行断言
(?!pattern) - 负向先行断言
(?<=pattern) - 正向后行断言
(? - 负向后行断言

练习题目

通过这些实际练习来测试您的知识。

练习1:邮箱验证

创建一个正则表达式来验证邮箱地址。

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

练习2:手机号码

创建一个正则表达式来匹配手机号码。

^1[3-9]\d{9}$

练习3:日期格式

创建一个正则表达式来匹配 YYYY-MM-DD 日期格式。

^\d{4}-\d{2}-\d{2}$