正在加载,请稍候…

正则表达式指南:在线编写、测试和调试正则表达式

从基础到高级学习正则表达式语法,即时测试你的表达式,避免常见陷阱。

正则表达式指南:在线编写、测试和调试正则表达式

什么是正则表达式?

正则表达式(regex 或 regexp)是一个定义搜索模式的字符序列。正则表达式用于搜索、匹配、验证和转换文本。它们几乎被所有编程语言和许多文本编辑器支持。

尽管外表神秘,正则表达式遵循一致的规则。一旦你学会了语法,就可以在 Python、JavaScript、Java、Perl、Ruby 以及数十种其他语言中应用它。

正则表达式指南:在线编写、测试和调试正则表达式插图

基本正则表达式语法

字面字符

大多数字符匹配自身:cat 匹配字符串 "cat"。

元字符

特殊字符具有特殊含义,必须用反斜杠转义才能按字面匹配:

. ^ $ * + ? { } [ ] \\ | ( )

点号:任意字符

. 匹配除换行符外的任意单个字符:

c.t  匹配: cat, cot, cut, c4t, c.t
     不匹配: cart (c 和 t 之间有两个字符)

正则表达式指南:在线编写、测试和调试正则表达式插图

字符类

[abc] 匹配任意单个字符 a、b 或 c:

[aeiou]     匹配任意元音
[a-z]       匹配任意小写字母
[A-Za-z0-9] 匹配任意字母数字字符
[^aeiou]    匹配任意非元音字符(^ 在 [] 内表示取反)

量词

控制前面的元素必须匹配的次数:

量词 含义
* 零次或多次
+ 一次或多次
? 零次或一次(可选)
{3} 恰好 3 次
{2,5} 2 到 5 次之间
{3,} 3 次或更多

简写字符类

简写 等价于 含义
\d [0-9] 任意数字
\D [^0-9] 任意非数字
\w [a-zA-Z0-9_] 任意单词字符
\W [^a-zA-Z0-9_] 任意非单词字符
\s [ \t\n\r\f\v] 任意空白字符
\S [^ \t\n\r\f\v] 任意非空白字符

锚点

锚点 含义
^ 字符串开头(多行模式下为行开头)
$ 字符串结尾(多行模式下为行结尾)
\b 单词边界
\B 非单词边界

正则表达式指南:在线编写、测试和调试正则表达式插图

分组与选择

(abc) 捕获匹配的文本到一个分组中:

(\d{4})-(\d{2})-(\d{2})  匹配并捕获日期,如 2025-06-15

| 提供选择(OR):

cat|dog  匹配 "cat" 或 "dog"
(cat|dog)s  匹配 "cats" 或 "dogs"

实用正则表达式示例

电子邮件验证(简化版):
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

URL 检测:
https?://[^\s<>"{}|\\^`\[\]]+

IP 地址(基本):
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

电话号码(美国):
\+?1?\s?(\d{3}[\s.-]?)?\d{3}[\s.-]?\d{4}

日期(YYYY-MM-DD):
\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

十六进制颜色代码:
#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})

密码(8 位以上,包含大写字母、小写字母、数字):
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$

前瞻与后顾

前瞻匹配一个后面跟着特定模式的位置(但不包含该模式):

\d+(?= dollars)  匹配 "100 dollars" 中的 "100",但不匹配 "100 euros"

负前瞻匹配一个后面不跟着特定模式的位置:

\b\w+\b(?! are)  匹配后面不跟着 " are" 的单词

后顾匹配一个前面有特定模式的位置:

(?<=\$)\d+  匹配 "$100" 中的 "100"

正则表达式标志

标志 JavaScript Python 含义
全局 g (不需要) 查找所有匹配,而不仅仅是第一个
不区分大小写 i re.IGNORECASE 匹配时不区分大小写
多行 m re.MULTILINE ^ 和 $ 匹配行边界
点号匹配所有 s re.DOTALL . 也匹配换行符

使用此工具

输入你的正则表达式和测试字符串,即可实时高亮显示匹配的部分。支持带标志(g, i, m, s)的 JavaScript 正则表达式语法。非常适合在代码中使用之前构建和调试模式。

-> 试试 正则表达式测试器