跳到正文
SPCXTools

正则表达式测试工具

输入正则表达式,实时查看每个匹配、捕获组和替换结果。

本地运行——文件不会离开你的设备

正在加载工具…

如何使用正则表达式测试工具

  1. 1在 模式 框中输入您的正则表达式——无需斜杠。
  2. 2选择标志,例如 g (查找所有匹配项)、i (忽略大小写) 或 m (多行模式)。
  3. 3将要搜索的文本粘贴到 测试字符串 框中。匹配项会立即高亮显示并计数。
  4. 4在表格中查看每个匹配项的位置和捕获组。
  5. 5勾选 替换 并输入替换内容 (例如 $2: $1),以预览 String.replace 的结果。

实时测试正则表达式

正则表达式功能强大,但出了名的难以阅读。这款正则表达式测试工具可以在您输入时,实时准确地显示模式的效果:每个匹配项都会在文本中高亮显示、计数,并列出其位置和捕获组。替换预览功能可以展示查找和替换的结果,方便您在代码中实际应用。所有操作都在您的浏览器本地运行,并通过后台工作线程执行,以防止失控的模式导致页面卡死。

功能特性

  • 实时高亮 显示测试字符串中的所有匹配项。
  • 标志开关,可切换 g、i、m、s 和 u 标志,并显示完整的 /pattern/flags 字面量。
  • 匹配表格,包含索引、编号捕获组和命名捕获组。
  • 替换预览,支持 $1、$<name>、$& 等替换模式。
  • 清晰的错误提示,用于指示无效语法,并设有一秒钟的安全超时,以防止灾难性回溯。

实际用途

验证输入。 在将邮政编码、产品代码或用户名的验证模式添加到表单之前,先用一系列有效和无效的样本来构建和测试它们。

提取数据。 从日志和文档中提取电子邮件地址、URL、日期或 ID。通过捕获组,您可以将每个匹配项拆分为多个部分,例如用户名和域名。

查找和替换。 将日期格式从 MM/DD/YYYY 更改为 YYYY-MM-DD、重命名变量或清理导出的数据。在这里预览替换结果,然后在您的编辑器或脚本中使用相同的模式。

学习正则表达式。 尝试使用量词、字符类和锚点,并立即查看效果。

快速参考

语法 含义
. 匹配除换行符以外的任意字符 (使用 s 标志时可匹配任意字符)
\d \w \s 数字、单词字符、空白字符
[abc] [^abc] 匹配所列字符之一 / 匹配非所列字符
* + ? 0 次或多次、1 次或多次、0 次或 1 次
{2,5} 2 到 5 次
^ $ 文本的开头和结尾 (使用 m 标志时为每行的开头和结尾)
(…) (?<name>…) 捕获组、命名捕获组
(?:…) 非捕获组
(?=…) (?!…) 正向先行断言、负向先行断言
\b 单词边界

量词默认是贪婪的;添加 ? (如 .*?) 可使其变为懒惰模式。之后若要清理列表,可以试试 删除重复行 工具,或使用 文本差异比对 工具来比较前后的变化。

常见问题

这个测试工具使用哪种正则表达式风格?
它使用您浏览器的 JavaScript (ECMAScript) 正则表达式引擎——与 Node.js、Deno 和前端代码使用的引擎相同。大多数语法与 PCRE、Python 和 Java 共享,但某些功能有所不同,例如所有格量词 (不支持) 和后行断言 (现代浏览器支持)。
为什么我的正则表达式只找到一个匹配项?
如果没有 g (全局) 标志,JavaScript 会在找到第一个匹配项后停止。开启 g 标志以查找文本中的所有匹配项。
如何在替换内容中引用捕获组?
对于编号组,请使用 $1、$2 等;对于像 (?<year>\d{4}) 这样的命名组,请使用 $<name>;$& 代表整个匹配项;$$ 代表一个字面上的美元符号。
如果我的正则表达式运行得非常慢怎么办?
某些模式 (例如 (a+)+$) 在处理特定输入时可能会花费指数级时间 (即“灾难性回溯”)。本工具在后台工作线程中运行您的表达式,并在一秒后停止它,因此页面永远不会卡死。请重写模式以避免嵌套量词。
s 和 u 标志有什么作用?
s (dotAll) 标志允许 . 匹配换行符。u (unicode) 标志将模式和文本视为 Unicode 码点,这对于处理表情符号和 \p{…} 属性转义 (例如 \p{L},代表任何字母) 是必需的。
我的文本会被上传吗?
不会。匹配和替换都在您的浏览器本地运行。