正则测试

实时测试正则表达式,高亮匹配结果、查看捕获分组与替换效果。

//g
匹配 0 处
替换预览使用 $1、$& 引用分组与整体匹配

填写替换内容后,这里会显示替换结果。

本工具在你的浏览器内运行,输入的内容与文件不会上传到任何服务器。

常见问题

这是哪种正则语法?
用的是 JavaScript(ECMAScript)的正则引擎,也就是 new RegExp() 的那一套。它与 Python、PHP、Java 的语法大部分一致,但在命名分组、后行断言等细节上存在差异,跨语言使用前请留意。
为什么我的正则匹配到的东西比我预想的多?
最常见的原因是量词贪婪。比如 a.*b 会匹配从第一个 a 到最后一个 b 的整段内容;在量词后加问号改成 a.*?b 就变成非贪婪匹配,会停在第一个 b。
g 和 y 标志有什么区别?
g(global)表示查找所有匹配,不加就只返回第一个。y(sticky)表示必须从上次匹配结束的位置紧邻开始匹配,适合做词法分析这类逐段推进的场景。
s 标志是做什么的?
s(dotAll)让点号 . 也能匹配换行符。默认情况下 . 不匹配换行,这也是很多人发现「明明有内容却匹配不到」的原因。
我的正则把浏览器卡住了怎么办?
这是灾难性回溯,通常出现在嵌套量词上(例如 (a+)+b 遇到一长串 a)。本工具限制单次执行的匹配数量来降低卡顿,但正则本身的写法才是根因,建议改用更具体的字符类。

相关工具