正则匹配

在线正则表达式匹配测试工具,支持全局匹配、忽略大小写、多行模式等标志,实时高亮显示匹配结果,查看捕获分组详情。内置常用正则预设和语法速查表,适用于表单验证、数据提取、文本处理等场景。

匹配数量
0
文本长度
0
正则状态
就绪
耗时(ms)
0.00
1 正则表达式
/ /gi
g 全局匹配
i 忽略大小写
m 多行模式
s dotAll(.匹配换行)
u Unicode
y 粘性匹配
常用预设
2 待匹配文本
邮箱示例 URL示例 手机号示例 混合文本
3 匹配结果
输入正则表达式和文本后,匹配结果将显示在此处
正则替换
替换结果将显示在此处...
正则语法速查表
字符类
.匹配任意单个字符(除换行)
\d匹配数字 [0-9]
\D匹配非数字
\w匹配字母数字下划线
\W匹配非字母数字下划线
\s匹配空白字符
\S匹配非空白字符
量词
*匹配0次或多次
+匹配1次或多次
?匹配0次或1次
{n}精确匹配n次
{n,}至少匹配n次
{n,m}匹配n到m次
锚点
^匹配字符串开头
$匹配字符串结尾
\b匹配单词边界
\B匹配非单词边界
分组与引用
(...)捕获分组
(?:...)非捕获分组
(?=...)正向先行断言
(?!...)负向先行断言
$1引用第1个捕获组
\1反向引用第1个捕获组
标志位
g全局匹配(查找所有)
i忽略大小写
m多行模式(^$匹配行首尾)
sdotAll(.匹配换行符)
uUnicode模式
y粘性匹配(从lastIndex开始)
特殊字符
[abc]字符集,匹配a或b或c
[^abc]否定字符集
[a-z]字符范围
|或( alternation)
\转义特殊字符

功能特性

实时匹配

输入正则表达式和文本后即时匹配,无需点击按钮,每次输入变化都会自动重新执行匹配并更新结果。

6种标志位

支持g(全局)、i(忽略大小写)、m(多行)、s(dotAll)、u(Unicode)、y(粘性)六种正则标志位,点击切换。

高亮预览

匹配结果以高亮形式显示在原文中,直观展示匹配位置和内容,深色主题下高亮颜色自动适配。

匹配详情

逐条列出每个匹配项的文本内容、位置索引和捕获分组信息,方便调试复杂的正则表达式。

正则替换

支持基于正则表达式的文本替换,可使用 $1$2 等引用捕获分组,实现灵活的文本变换。

预设与速查表

内置邮箱、URL、手机号等10种常用正则预设,以及完整的正则语法速查表,无需记忆即可快速使用。

使用说明

如何使用正则匹配工具?

  • 在正则表达式输入框中输入正则模式(不需要加 / 分隔符),如 \d+ 匹配数字。
  • 点击下方的标志位按钮切换匹配选项:g 全局匹配、i 忽略大小写等。
  • 在文本输入区输入或粘贴待匹配的文本内容。
  • 匹配结果会实时显示在下方的预览区中,匹配到的内容会高亮显示。
  • 展开匹配详情列表可查看每个匹配项的文本、位置和捕获分组信息。
  • 在替换区输入替换字符串(支持 $1$2 等捕获组引用),点击替换按钮查看替换结果。
  • 也可从「常用预设」下拉框中选择预设正则表达式快速开始。

正则标志位说明

  • g (全局匹配):查找所有匹配项,不加 g 则只匹配第一个。
  • i (忽略大小写):匹配时不区分大小写,如 /hello/i 可匹配 Hello、HELLO。
  • m (多行模式):使 ^$ 匹配每行的开头和结尾,而非整个字符串。
  • s (dotAll):使 . 能匹配换行符 \n,默认情况下 . 不匹配换行。
  • u (Unicode):启用Unicode模式,正确处理Unicode字符,如中文、emoji等。
  • y (粘性匹配):从 lastIndex 位置开始精确匹配,不跳过字符。

替换中的捕获组引用

在替换字符串中,可以使用 $1$2 等引用正则表达式中的捕获分组(按左括号顺序编号)。例如,正则 (\w+)@(\w+) 匹配 user@domain,替换为 $2.$1 将得到 domain.user。此外,$& 表示整个匹配文本,$` 表示匹配前的文本,$' 表示匹配后的文本。

常见问题

正则匹配工具是免费的吗?
是的,本工具完全免费,无需注册登录。所有正则匹配和替换均在浏览器本地通过JavaScript的RegExp引擎完成,不涉及服务器交互,使用流畅且隐私安全。
为什么我的正则表达式报错?
正则表达式报错通常是因为语法错误,常见原因包括:括号不匹配(如 (abc 缺少右括号)、字符集未闭合(如 [abc 缺少 ])、量词位置错误(如 *+)、无效的转义序列等。工具会显示具体的错误信息,请根据提示修正正则表达式语法。
JavaScript正则和其他语言的正则有什么区别?
本工具使用JavaScript的RegExp引擎,与Python、Java等语言的正则语法基本兼容,但存在一些差异:JavaScript不支持 (?P<name>...) 命名捕获组(ES2018+支持 (?<name>...) 语法)、不支持 (?<=...) 后行断言(ES2018+支持)、不支持 \A\Z(使用 ^$ 替代)。大部分常用正则语法是通用的。
如何匹配中文?
匹配中文字符可以使用 [\u4e00-\u9fa5] 匹配Unicode范围,或使用 \p{Script=Han}(需启用 u 标志位)。本工具的预设中已包含中文字符匹配示例。注意:处理中文时建议启用Unicode(u)标志位以获得更准确的结果。
贪婪匹配和非贪婪匹配有什么区别?
默认情况下,量词(如 *+)是贪婪的,会尽可能匹配更多字符。在量词后加 ? 可改为非贪婪(懒惰)模式,尽可能少地匹配。例如,对字符串 <a><b><.*> 贪婪匹配整个字符串,而 <.*?> 非贪婪匹配 <a><b> 两个标签。
如何在替换中使用捕获组?
在替换字符串中使用 $1$2 等引用捕获分组,编号按正则中左括号的顺序确定。例如,正则 (\d{4})-(\d{2})-(\d{2}) 匹配日期,替换为 $3/$2/$1 可将 2024-03-15 转换为 15/03/2024$& 表示整个匹配文本。