本工具用于在线编写、测试和调试正则表达式,实时显示匹配结果:
$1、$2、$& 等替换语法。/);| 修饰符 | 名称 | 作用 |
|---|---|---|
g | global | 全局匹配,查找所有匹配项而非仅第一个 |
i | ignoreCase | 忽略大小写 |
m | multiline | 多行模式,^ 和 $ 匹配每行的开头和结尾 |
s | dotAll | 让 . 匹配换行符(默认不匹配) |
u | unicode | 启用 Unicode 模式,正确处理中文、emoji 等 |
y | sticky | 粘性匹配,从 lastIndex 位置开始精确匹配 |
「替换为」输入框支持以下特殊变量(遵循 JavaScript String.replace 规范):
| 变量 | 含义 |
|---|---|
$1、$2… | 第 1、2 个捕获组的内容 |
$& | 整个匹配到的内容 |
` $ `` | 匹配内容左侧的文本 |
$' | 匹配内容右侧的文本 |
$$ | 字面量 $ 符号 |
例如:用 (\d{4})-(\d{2})-(\d{2}) 匹配 2026-09-20,替换为 $3/$2/$1 得到 20/09/2026。
/,工具会自动补全;g 修饰符时,只匹配/替换第一个结果,工具会给出提示;正则表达式(Regular Expression,简称 regex)是一种描述字符串匹配模式的语言,用于查找、验证、提取和替换文本。几乎所有编程语言都支持正则,是处理文本的通用工具。
| 元字符 | 含义 | 示例 |
|---|---|---|
. | 任意单个字符(默认不含换行) | a.c 匹配 abc、a1c |
\d | 数字 [0-9] | \d{3} 匹配 3 位数字 |
\D | 非数字 | \D+ 匹配连续非数字 |
\w | 字母、数字、下划线 [A-Za-z0-9_] | \w+ 匹配单词 |
\W | 非 \w | — |
\s | 空白字符(空格、制表、换行) | \s+ 匹配连续空白 |
\S | 非空白字符 | — |
\b | 单词边界 | \bcat\b 匹配独立的 cat |
^ | 行/字符串开头 | ^abc |
$ | 行/字符串结尾 | abc$ |
| 量词 | 含义 |
|---|---|
* | 0 次或多次 |
+ | 1 次或多次 |
? | 0 次或 1 次 |
{n} | 恰好 n 次 |
{n,} | 至少 n 次 |
{n,m} | n 到 m 次 |
*?、+?、?? | 惰性(非贪婪)匹配,尽可能少匹配 |
默认量词是贪婪的,会尽可能多地匹配:
<.+> 匹配 <p>a</p><p>b</p> 时,会匹配整个字符串(贪婪);<.+?> 加上 ? 变为惰性,只匹配 <p>、</p> 等最短片段。| 语法 | 名称 | 说明 |
|---|---|---|
[abc] | 字符组 | 匹配 a、b、c 中任意一个 |
[^abc] | 否定字符组 | 匹配除 a、b、c 外的字符 |
[a-z] | 范围 | 匹配小写字母 |
(abc) | 捕获组 | 分组并捕获,可用 $1 引用 |
(?:abc) | 非捕获组 | 只分组不捕获 |
(?<name>abc) | 命名捕获组 | 具名分组,便于读取 |
| `a | b` | 或 |
(?=abc) | 正向先行断言 | 后面必须是 abc(不消耗字符) |
(?!abc) | 负向先行断言 | 后面不能是 abc |
(?<=abc) | 正向后行断言 | 前面必须是 abc |
(?<!abc) | 负向后行断言 | 前面不能是 abc |
.、\d、\w、+、*、?,再学分组与断言;(a+)+)可能导致灾难性回溯,让程序卡死;测试文本会上传到服务器吗?
正则语法错误怎么办?
匹配结果中的「捕获组」是什么?
常用正则预设有哪些?
替换功能怎么用?支持捕获组吗?
表达式两边需要写斜杠 / 吗?
为什么只匹配到了第一个结果?
这个正则测试工具支持哪些修饰符?