DevToolPal
简

正则表达式测试

实时测试 JavaScript 正则表达式:高亮匹配结果、查看捕获组、预览替换效果。

本地处理,不上传

选项

测试文本

0 字符 · 0 B

结果

结果会显示在这里

功能简介

正则测试工具让你边写正则边看结果:匹配内容在原文中高亮显示,每个捕获组的值和位置都列出来,还可以填写替换模板,预览 String.replace 的结果。

使用方法

  1. 在「测试文本」里粘贴要搜索的内容,或点「示例」。
  2. 在选项面板的「正则表达式」里输入模式,不需要加两边的斜杠。
  3. 按需打开标志:g 查找全部,i 忽略大小写,m 让 ^、$ 按行匹配,s 让 . 也匹配换行,u 启用完整 Unicode。
  4. 查看结果:匹配数量、高亮文本,以及列出每处匹配和分组的表格,点「复制」可复制任意值。
  5. 想试替换,就在「替换为」里填写模板,比如 $2, $1。

示例

默认的模式 ([\w.+-]+)@([\w-]+(?:\.[\w-]+)+) 用来查找邮箱地址,并分别捕获用户名和域名。替换模板填 $1 at $2 时,hello@example.com 会变成 hello at example.com。

速查

  • \d 数字,\w 单词字符,\s 空白,. 任意字符
  • * 零个或多个,+ 一个或多个,? 可选,{2,5} 2 到 5 个
  • [abc] 其中之一,[^abc] 都不是,a|b 二选一
  • (...) 捕获组,(?<name>...) 命名分组,(?:...) 不捕获的分组
  • (?=...) 先行断言,(?<=...) 后行断言,\b 单词边界

常见问题

› 用的是哪种正则引擎?

浏览器内置的 JavaScript(ECMAScript)正则引擎,和 Node.js、Deno 以及所有浏览器一致。大部分语法与 PCRE、Python、Java 通用,但不支持占有量词、递归等少数特性。

› 为什么只找到一处匹配?

打开「全局 (g)」。不加 g 时,JavaScript 找到第一处匹配就停止。

› 替换时怎么引用分组?

用 $1、$2… 引用编号分组,$<name> 引用命名分组,$& 表示整个匹配,$$ 表示字面的美元符号。

› 为什么 ^ 和 $ 不能匹配每一行?

默认它们只匹配整段文本的开头和结尾。打开「多行 (m)」后会在每个换行处匹配。

› 文本会被上传吗?

不会,匹配在浏览器中进行。注意极慢的正则(灾难性回溯)可能让页面卡住,长文本上避免 (a+)+ 这类嵌套量词。