9314 工具箱

正则写完,立刻看到命中了哪里

左边贴正则,下面贴文本。命中处实时标黄,每一处摊成一张卡片,捕获组、位置全在上面。

正则表达式

不用写两头的斜杠
/ /

测试文本

随手贴一段,改了立刻重跑

命中明细

每处匹配一张卡

正则和测试文本只存在你这台设备的浏览器里,不上传到服务器,换设备、清缓存会丢。 想彻底删掉,点页脚的「清空我的数据」。

改一个字符,看一次全貌

调试正则的常规姿势是打开控制台,敲一行 console.log,跑完再看。改一个字符,整套动作重来。命中多了还要自己数下标。

这里把三件事摊开:预览区直接标黄命中段,明细区每一处匹配一张卡,捕获组按 $1、$2 列在卡里。改正则的同时,三块内容一起刷新。

标志不是装饰

g 决定扫一处还是扫全文,i 管大小写,m 让 ^ 和 $ 认每一行。s 是最容易被忘掉的那个——没它的时候 . 不认换行符,跨行匹配永远差一口气。

标志按钮悬停或者点一下,下面那行小字会告诉你它管什么。

空匹配也会如实告诉你

(\d*) 这种写法对任何位置都成立,结果是一串空命中。工具不藏这些——空匹配照常出卡,位置标得清清楚楚,比「明明该匹配却什么都没有」好排查得多。

常见疑问

为什么我的正则匹配到了空字符串?

多半是量词套在一个可空的东西上,比如 (\d*) 这样的写法,它对任何位置都成立。给量词加个 +(改成 \d+),或者检查是不是把 ? 用在了整个分组上。工具会把空匹配也如实显示出来,方便定位。

g 标志到底影响什么?

不带 g,整个文本只报第一处匹配;带上 g,从头扫到尾,每一处命中各占一张卡片。替换预览同理:有 g 替换全部,没 g 只替换第一处。

我写的正则和测试文本会被上传吗?

不会。匹配用的是浏览器自己的正则引擎,页面不发任何请求。正则、文本和标志只存在这台设备的 localStorage 里,刷新后还在,点页脚「清空我的数据」可彻底删掉。

支持前后查找(lookaround)吗?

支持。(?=…) 和 (?!…) 以及 (?<=…) 和 (?<!…) 都能用,走的是浏览器原生引擎。注意 Safari 在 16.4 之前不支持后行查找,换浏览器打开就好。

替换功能怎么用?

在替换框里填内容,下面立刻给出替换后的完整文本,$1、$2 会替换成对应的捕获组。想删掉匹配内容就留空,想调换顺序就写 $2 $1。