正则表达式语法速查

完整的正则表达式语法速查表,涵盖元字符、量词、分组、断言、字符类等所有正则语法,配有详细说明和示例,是正则表达式入门和日常开发的必备参考手册。

元字符

字符 描述 示例
.匹配除换行符外的任意字符
a.c 匹配 abc, a1c
\转义字符,将特殊字符转义为字面量
a\.c 匹配 a.c
|或运算符,匹配左边或右边的表达式
a|b 匹配 a 或 b
()分组,将多个字符组合为一个单元
(ab)+ 匹配 ab, abab
[]字符类,匹配方括号中的任意字符
[abc] 匹配 a, b, c
{}量词,指定匹配的次数
a{3} 匹配 aaa

量词

字符 描述 示例
*匹配前面的表达式 0 次或多次
ab* 匹配 a, ab, abb
+匹配前面的表达式 1 次或多次
ab+ 匹配 ab, abb
?匹配前面的表达式 0 次或 1 次
ab? 匹配 a, ab
{n}精确匹配 n 次
a{3} 匹配 aaa
{n,}至少匹配 n 次
a{2,} 匹配 aa, aaa...
{n,m}匹配 n 到 m 次
a{2,4} 匹配 aa 到 aaaa
*?非贪婪匹配,尽可能少匹配
a*? 最小匹配
+?非贪婪匹配,尽可能少匹配
a+? 最小匹配

字符类

字符 描述 示例
[abc]匹配 a、b 或 c 中的任意一个
[aeiou] 匹配元音字母
[^abc]匹配除 a、b、c 以外的任意字符
[^0-9] 匹配非数字
[a-z]匹配 a 到 z 范围内的任意字符
[a-z] 匹配小写字母
[A-Z]匹配 A 到 Z 范围内的任意字符
[A-Z] 匹配大写字母
[0-9]匹配 0 到 9 范围内的任意数字
[0-9] 匹配数字
\d匹配数字,等同于 [0-9]
\d+ 匹配数字串
\D匹配非数字,等同于 [^0-9]
\D+ 匹配非数字串
\w匹配单词字符,等同于 [a-zA-Z0-9_]
\w+ 匹配单词
\W匹配非单词字符
\W+ 匹配非单词
\s匹配空白字符(空格、制表符、换行等)
\s+ 匹配空白
\S匹配非空白字符
\S+ 匹配非空白

分组与引用

字符 描述 示例
(pattern)捕获分组,匹配并捕获匹配的文本
(ab)+ 捕获 ab
(?:pattern)非捕获分组,只分组不捕获
(?:ab)+ 不捕获
\1, \2...反向引用,引用第 n 个捕获组的内容
(\w)\1 匹配重复字符
(?<name>pattern)命名捕获分组
(?<year>\d{4})
\k<name>引用命名捕获组
\k<year>

锚点

字符 描述 示例
^匹配字符串的开始位置
^abc 以 abc 开头
$匹配字符串的结束位置
abc$ 以 abc 结尾
\b匹配单词边界
\bword\b 精确匹配单词
\B匹配非单词边界
\Bword 非单词边界
^多行模式下匹配每行的开始
/^abc/m
$多行模式下匹配每行的结束
/abc$/m

断言

字符 描述 示例
(?=pattern)正向先行断言,匹配后面是 pattern 的位置
a(?=b) 匹配后面是 b 的 a
(?!pattern)负向先行断言,匹配后面不是 pattern 的位置
a(?!b) 匹配后面不是 b 的 a
(?<=pattern)正向后行断言,匹配前面是 pattern 的位置
(?<=a)b 匹配前面是 a 的 b
(?<!pattern)负向后行断言,匹配前面不是 pattern 的位置
(?<!a)b 匹配前面不是 a 的 b

修饰符

字符 描述 示例
g全局匹配,查找所有匹配项
/pattern/g
i忽略大小写
/pattern/i
m多行模式,^ 和 $ 匹配每行
/pattern/m
s单行模式,. 匹配换行符
/pattern/s
uUnicode 模式
/pattern/u
y粘性匹配,从 lastIndex 开始
/pattern/y

常用转义字符

字符 描述 示例
\n换行符
匹配换行
\r回车符
匹配回车
\t制表符(Tab)
匹配制表符
\0空字符
匹配 null 字符
\\反斜杠本身
匹配 \
\.点号本身
匹配 .
\*星号本身
匹配 *
\+加号本身
匹配 +
\?问号本身
匹配 ?
\^脱字符本身
匹配 ^
\$美元符本身
匹配 $
\[左方括号本身
匹配 [
\]右方括号本身
匹配 ]
\(左圆括号本身
匹配 (
\)右圆括号本身
匹配 )
\{左花括号本身
匹配 {
\}右花括号本身
匹配 }
\|竖线本身
匹配 |

运算符优先级

优先级 运算符 说明
1\转义符
2(), (?:), (?=), []分组和字符类
3*, +, ?, {n}, {n,}, {n,m}量词
4^, $, \b, \B锚点和边界
5|或运算
优先级说明:正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。相同优先级的从左到右进行运算,不同优先级的运算先高后低。

正则表达式学习指南

从入门到精通,掌握正则表达式的核心概念和实用技巧

什么是正则表达式?

正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串的模式。它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式是文本处理和数据验证的强大工具,几乎所有的编程语言都支持正则表达式。

为什么要学习正则表达式?

  • 高效的文本处理:用一行正则表达式可以替代几十行甚至上百行的字符串处理代码。
  • 数据验证:验证邮箱、手机号、身份证号、密码强度等输入格式。
  • 数据提取:从大量文本中提取需要的信息,如抓取网页中的数据。
  • 数据替换:批量替换文本中的特定内容,如代码重构。
  • 编辑器进阶:高级编辑器(VS Code、Vim、Sublime等)都支持正则查找替换。

学习建议

1. 从基础开始:先掌握元字符、字符类、量词等基础概念,不要急于求成。

2. 多练习:正则表达式是实践性很强的技能,通过大量练习才能熟练掌握。

3. 使用工具:使用正则测试工具可以帮助你理解和调试正则表达式。

4. 从简单到复杂:先写简单的正则,逐步增加复杂度,不要一开始就写非常复杂的表达式。

5. 可读性优先:复杂的正则表达式可以适当添加注释,或者拆分成多个步骤。

6. 不要过度使用:正则不是万能的,某些场景下用普通的字符串方法可能更清晰高效。