实时匹配
输入模式时即时看到匹配高亮。无需点击按钮——每次按键都更新结果。
实时测试和调试您的正则表达式。我们的免费工具提供实时匹配高亮、分组信息和便捷的 JavaScript 正则速查表。
实时正则匹配,含捕获组、标志和速查表——就在您的浏览器中。无需上传,无需注册。
在模式输入字段中输入您的正则表达式。使用标志复选框切换 g、i、m、s、u 或 y 修饰符。
为您的搜索选择适当的标志,例如 'g' 用于全局搜索或 'i' 用于不区分大小写。
在“测试字符串”区域中输入要测试表达式的文本。可以粘贴最多几兆字节的文本。
实时查看高亮的匹配,并在结果面板中查看详细的匹配信息,包括捕获组。
实时匹配、详细分组信息和内置速查表。
输入模式时即时看到匹配高亮。无需点击按钮——每次按键都更新结果。
每个捕获组在完整匹配旁边显示,展示模式中每个组捕获的确切文本。
独立切换 g(全局)、i(不区分大小写)、m(多行)、s(dotall)、u(unicode)和 y(粘性)标志。
查看每个匹配的索引、长度和捕获文本。非常适合调试具有多个组的复杂模式。
所有正则处理在浏览器中本地完成。您的模式和测试数据永远不会离开您的设备。
无需注册、无需 API 密钥、无每日配额。对个人和商业用途永久免费。
正则表达式(regex 或 regexp)是定义搜索模式的字符序列。这个概念起源于 1950 年代的理论计算机科学,并由 grep、sed 和 awk 等 Unix 工具普及。如今,几乎所有编程语言和文本编辑器都支持正则表达式,使其成为开发者可以学习的最普遍有用的技能之一。
核心上,正则模式使用字面字符(匹配自身)和元字符(具有特殊含义)的组合来描述要匹配的文本。例如,模式 '\d{3}-\d{4}' 匹配 '123-4567' 格式的任何文本——三个数字、一个连字符和四个数字。正则表达式的强大之处在于它能够简洁地表达复杂的匹配规则。
量词 (*, +, ?, {n,m}) 控制模式元素可以重复多少次。默认情况下,量词是贪婪的——它们尽可能多地匹配字符,然后如果整体模式失败则回溯。这可能导致意外结果:模式 '<.*>' 应用于 '' 匹配整个字符串 '',因为 .* 贪婪地消耗直到最后一个 > 的所有内容。
懒惰量词 (*?, +?, ??, {n,m}?) 做相反的事——它们尽可能少地匹配字符。模式 '<.*?>' 应用于 '' 只匹配 ''。懒惰量词通常更适合提取 HTML 标签或匹配引号字符串等任务,在这些任务中您想要最小可能的匹配。
嵌套量词如 (a+)+ 或 (a*)* 可导致灾难性回溯——正则引擎在不匹配的输入上尝试指数级组合。为避免此问题,请使用更具体的模式、原子组 (?>...) 或占有量词 (a++)(如果可用)。如果您的正则导致浏览器卡死,请通过减少嵌套量词来简化模式。
正则测试器节省时间的真实场景。
在部署到应用程序之前,测试邮箱、电话、URL 和邮编验证模式。
使用捕获组从服务器日志、应用日志或访问日志中提取特定字段。
开发和测试基于正则的查找替换模式,用于代码重构或数据转换。
测试用于输入清理和 WAF 规则的模式,针对各种攻击载荷。
热门正则测试工具的并排对比。
| 功能 | NovaTools | Regex101 | RegExr | VS Code |
|---|---|---|---|---|
| 隐私(无上传) | 100% 本地 | 上传到服务器 | 上传到服务器 | 本地 |
| 价格 | 免费无限制 | 免费含广告 | 免费含广告 | 免费 |
| 实时匹配 | ||||
| 捕获组 | ||||
| 速查表 | 内置 | |||
| 所有 JS 标志 | g,i,m,s,u,y | |||
| 移动端友好 | 有限 | 有限 | ||
| 离线可用 | 页面加载后 |
Regex101 和 RegExr 是优秀的工具,但会将您的测试数据上传到他们的服务器。我们的工具完全在本地处理——您的模式和测试字符串永远不会离开浏览器。
JavaScript (ECMAScript) 正则表达式语法速查表。
| 符号 / 代码 | 说明 | 示例 |
|---|---|---|
. | 匹配除换行符外的任何单个字符(除非设置 's' 标志)。 | a.c → abc, axc |
\d | 匹配任何数字 (0-9)。等价于 [0-9]。 | \d+ → 123 |
\D | 匹配任何非数字字符。 | \D+ → abc |
\w | 匹配任何单词字符(字母、数字、下划线)。 | \w+ → hello_123 |
\W | 匹配任何非单词字符。 | \W+ → !@# |
\s | 匹配任何空白字符(空格、制表符、换行)。 | \s+ → ' \n' |
.匹配除换行符外的任何单个字符(除非设置 's' 标志)。
a.c → abc, axc\d匹配任何数字 (0-9)。等价于 [0-9]。
\d+ → 123\D匹配任何非数字字符。
\D+ → abc\w匹配任何单词字符(字母、数字、下划线)。
\w+ → hello_123\W匹配任何非单词字符。
\W+ → !@#\s匹配任何空白字符(空格、制表符、换行)。
\s+ → ' \n'| 符号 / 代码 | 说明 | 示例 |
|---|---|---|
* | 匹配 0 次或多次。 | ab* → a, ab, abbb |
+ | 匹配 1 次或多次。 | ab+ → ab, abbb |
? | 匹配 0 次或 1 次(可选)。 | colou?r → color, colour |
{n} | 匹配恰好 n 次。 | \d{4} → 2026 |
{n,m} | 匹配 n 到 m 次。 | \d{2,4} → 12, 123, 1234 |
*匹配 0 次或多次。
ab* → a, ab, abbb+匹配 1 次或多次。
ab+ → ab, abbb?匹配 0 次或 1 次(可选)。
colou?r → color, colour{n}匹配恰好 n 次。
\d{4} → 2026{n,m}匹配 n 到 m 次。
\d{2,4} → 12, 123, 1234| 符号 / 代码 | 说明 | 示例 |
|---|---|---|
^ | 匹配字符串开始(或带 'm' 标志的行首)。 | ^Hello → 开头的 Hello |
$ | 匹配字符串结束(或带 'm' 标志的行尾)。 | world$ → 结尾的 world |
\b | 匹配单词边界(单词字符与非单词字符之间)。 | \bcat\b → cat(不含 category) |
(...) | 捕获组。记住匹配的文本。 | (\d+)-(\d+) → 123-456 |
(?:...) | 非捕获组。分组但不记住。 | (?:ab)+ → abab |
(?=...) | 正向先行断言。断言模式跟随。 | \d+(?=px) → '12px' 中的 12 |
^匹配字符串开始(或带 'm' 标志的行首)。
^Hello → 开头的 Hello$匹配字符串结束(或带 'm' 标志的行尾)。
world$ → 结尾的 world\b匹配单词边界(单词字符与非单词字符之间)。
\bcat\b → cat(不含 category)(...)捕获组。记住匹配的文本。
(\d+)-(\d+) → 123-456(?:...)非捕获组。分组但不记住。
(?:ab)+ → abab(?=...)正向先行断言。断言模式跟随。
\d+(?=px) → '12px' 中的 12此工具由您浏览器自带的 JavaScript 引擎驱动。