正则表达式在线测试

/ /
g全局 i忽略大小写 m多行 s.匹配换行 uUnicode y粘性
输出结果
输入正则表达式和测试文本,结果实时显示
在线正则表达式测试工具:实时校验正则语法、高亮显示匹配结果、输出捕获组明细,支持 g/i/m/s/u/y 修饰符与 $1 替换,内置手机号、邮箱、身份证等常用正则预设,浏览器本地运行。

正则表达式在线测试工具使用说明

一、功能介绍

本工具用于在线编写、测试和调试正则表达式,实时显示匹配结果:

  • 支持正则表达式与修饰符(flags)组合,实时校验语法;
  • 提供 16 个常用正则预设,一键填入表达式与示例文本;
  • 测试文本中高亮显示所有匹配内容;
  • 输出匹配明细表(序号、匹配内容、位置、捕获组);
  • 支持替换功能,兼容 $1、$2、$& 等替换语法。

二、使用步骤

  1. 在「正则表达式」输入框填写表达式(不含两端的 /);
  2. 选择修饰符(g、i、m、s、u、y),或在右侧 flags 框直接输入;
  3. 在「测试文本」中粘贴待测试内容,结果会实时刷新;
  4. 如需替换,在「替换为」填写替换内容,右侧生成替换结果;
  5. 也可从「常用正则」下拉中选择预设,自动填入表达式与示例。

三、修饰符(flags)说明

修饰符名称作用
gglobal全局匹配,查找所有匹配项而非仅第一个
iignoreCase忽略大小写
mmultiline多行模式,^ 和 $ 匹配每行的开头和结尾
sdotAll让 . 匹配换行符(默认不匹配)
uunicode启用 Unicode 模式,正确处理中文、emoji 等
ysticky粘性匹配,从 lastIndex 位置开始精确匹配

四、替换语法

「替换为」输入框支持以下特殊变量(遵循 JavaScript String.replace 规范):

变量含义
$1、$2…第 1、2 个捕获组的内容
$&整个匹配到的内容
` $ ``匹配内容左侧的文本
$'匹配内容右侧的文本
$$字面量 $ 符号

例如:用 (\d{4})-(\d{2})-(\d{2}) 匹配 2026-09-20,替换为 $3/$2/$1 得到 20/09/2026。

五、注意事项

  • 表达式输入框不需要写两端的斜杠 /,工具会自动补全;
  • 未开启 g 修饰符时,只匹配/替换第一个结果,工具会给出提示;
  • 匹配数量过多时,明细表仅显示前 200 条,避免页面卡顿;
  • 正则语法错误时,右侧会显示具体的错误信息,便于排查;
  • 所有匹配、替换均在浏览器本地完成,测试文本不会上传服务器。

正则表达式科普知识

什么是正则表达式?

正则表达式(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)命名捕获组具名分组,便于读取
`ab`或
(?=abc)正向先行断言后面必须是 abc(不消耗字符)
(?!abc)负向先行断言后面不能是 abc
(?<=abc)正向后行断言前面必须是 abc
(?<!abc)负向后行断言前面不能是 abc

学习建议

  1. 从简单开始:先掌握 .、\d、\w、+、*、?,再学分组与断言;
  2. 善用在线测试:边写边看匹配结果,比死记语法更高效;
  3. 注意回溯性能:嵌套量词(如 (a+)+)可能导致灾难性回溯,让程序卡死;
  4. 能用字符串方法就用字符串方法:简单查找替换不必强上正则,可读性更好。

常见问题 FAQ

测试文本会上传到服务器吗?

不会。所有匹配、高亮与替换都在浏览器本地用 JavaScript 的 RegExp 完成,没有任何上传逻辑;断网状态下功能依然正常,敏感文本可放心测试。

正则语法错误怎么办?

工具会实时校验并在右侧显示具体的错误信息(如 "Unterminated group")。常见错误包括括号不配对、量词位置错误、转义字符缺失(如需要匹配反斜杠要写 \\)。按提示修改即可。

匹配结果中的「捕获组」是什么?

捕获组是用括号 () 包裹的子表达式,会单独捕获匹配到的内容。例如 (\d{4})-(\d{2}) 会捕获 $1=年份、$2=月份。明细表中会列出每个匹配的捕获组内容,方便提取数据。

常用正则预设有哪些?

内置 16 个常用正则:手机号、邮箱、身份证、URL、IPv4、日期、时间、中文字符、邮编、数字、十六进制颜色、HTML 标签、用户名、强密码、QQ 号、空白行。下拉选择后会自动填入表达式、修饰符和示例文本。

替换功能怎么用?支持捕获组吗?

在「替换为」输入框填写替换内容即可,支持 $1、$2 引用捕获组,$& 表示整个匹配,$$ 表示字面量 $。例如用 (\d{4})-(\d{2})-(\d{2}) 匹配日期,替换为 $3/$2/$1 可把 2026-09-20 变成 20/09/2026。

表达式两边需要写斜杠 / 吗?

不需要。左侧输入框只填写表达式本体(如 \d{3}-\d{4}),两端的斜杠由界面展示,修饰符单独填写。这样避免与表达式内部的斜杠混淆。

为什么只匹配到了第一个结果?

默认需要开启 g(全局)修饰符才会匹配所有结果,否则只返回第一个匹配。工具在未开启 g 时会给出提示,点击「g」按钮或在 flags 框加上 g 即可匹配全部。

这个正则测试工具支持哪些修饰符?

支持 JavaScript 的全部 6 个修饰符:g(全局)、i(忽略大小写)、m(多行)、s(. 匹配换行)、u(Unicode)、y(粘性)。可点击修饰符按钮切换,也可在表达式右侧的 flags 输入框直接填写。