正则表达式测试
Regex Tester
把正则跑在示例文本上,实时高亮命中的部分并列出捕获组。
对示例文本运行一个正则表达式,显示每个匹配及其偏移、捕获组,以及它会产生的替换结果。用的是浏览器自己的引擎,所以这里发生的就是你 JavaScript 里会发生的。
模式
在字符串的任何位置都能匹配、2 个捕获组。
拿来匹配的文本
所有命中都会列出来。没有 `g` 标志时,`String.replace` 只用第一个。
0处命中
耗时
0.0 ms
ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org替换
`$1`、`$<name>`、`$&`、`` $` ``、`$'` 和 `$$` 都会展开,跟 `String.replace` 展开它们的方式完全一样。
怎么用
写模式并设置标志
标志按钮是要紧的那六个:global、ignore case、multiline、dotAll、unicode 和 sticky。顶部的字面量就是你会粘进代码里的东西。
粘贴你实际手上的文本
匹配在原处高亮,颜色交替,相邻的匹配能分得开;同时列在一张表里,带每个组的值——包括没有参与匹配的组。
试试替换
`$1`、`$<name>`、`$&`、`` $` ``、`$'` 和 `$$` 都严格按 `String.replace` 的方式展开,所以预览就是真实的输出。
常见问题
为什么页面警告缺少 `g` 标志?
因为列表显示的是每一个匹配,但没有 `g` 的话你的代码不会。`String.replace` 只改第一个,`matchAll` 直接抛错。这就是你在这里看到的和你的程序做的之间的差别。
这和 Python 或 PCRE 是同一个引擎吗?
不是——是 JavaScript 的。后行断言、命名组和 `\p{…}` 这里支持,但原子组、占有量词、递归和内联标志组不支持,字符类的行为在某些地方也不同。在这里能用的模式在别处仍然可能失败。
我的模式把页面挂住了。
不应该——匹配在 worker 里运行,正是因为一个灾难性回溯的模式没有别的办法中断。跑得太久时运行会被终止并报告,这也是一个有用的信号:在这里会这样的模式,在你的服务器上也会。
为什么 `.` 不匹配我的换行?
因为那是 `s`(dotAll)的用处。没有它,`.` 匹配除行终止符以外的任何东西——而 `m`(multiline)又是另一回事:它改变 `^` 和 `$` 的含义,不改变 `.` 匹配什么。
可以从这些接进来
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
cron 表达式解读
Cron Parser
用大白话解释一条 cron 表达式,并按选定时区列出接下来几次执行的时刻。
查找与替换
Find & Replace
按字面、整词或正则表达式替换文本,支持捕获组,并把每一处命中先预览出来。
正则表达式解读
Regex Explainer
把正则拆成一棵带标注的树,让每一段究竟匹配什么变成可读的。
模式提取
Pattern Extractor
从一大段文本里把所有邮箱、网址、数字、日期或自定义正则的命中项抽成一份列表。
JSON ⇄ CSV 互转
JSON ⇄ CSV
把嵌套 JSON 按点路径列名拍平成列,或者从表格重新拼回对象。
JSON 对比
JSON Diff
按结构比较两份 JSON,忽略键的顺序,报出新增、删除和改动的路径。