支持 i/g/m/s/u/y 标志、实时匹配高亮、所有捕获组展示、字符串替换。Chrome/Firefox/Safari 现代浏览器全部支持。
工作流四步:① 在模式框输入正则(会实时高亮右侧文本中的所有匹配,命中处带分组底色);② 从文本框粘贴待处理的日志、代码或文章;③ 观察匹配数与每个匹配的分组拆解($1、$2 对应第几个括号);④ 需要改写时在「替换为」框填入替换串(支持 $1 反向引用),点「执行替换」得到结果。标志位(全局 g / 忽略大小写 i / 多行 m / 点号匹配换行 s)可按需开关,匹配数实时刷新,写错正则时错误提示会直接指出语法问题位置。
常见用法举例:提取日志里所有 IP(\d+\.\d+\.\d+\.\d+);把日期 2026-09-16 统一改写成 09/16/2026(模式 (\d{4})-(\d{2})-(\d{2}),替换 $2/$3/$1);给 Markdown 图片链接批量改路径;清洗文本中的连续空白(\s+ 替换为一个空格)。调试技巧:正则报错或匹配为 0 时,先删掉一半再逐步加回,定位是哪个片段写错;贪婪匹配(默认)抓多了就在量词后加 ? 改成非贪婪。
输入的文本和正则会传到服务器吗?不会。匹配、高亮、替换全部在浏览器本地用 JavaScript 的 RegExp 引擎完成,页面无后端无上报,处理日志里的敏感内容也不会离开你的设备。
为什么我的正则在别的语言里能用,这里不匹配?本工具用 JavaScript 正则方言:支持 \d \w \s、反向引用、命名组 (?<name>...)、非贪婪、前后视,但不支持 \p{Script} 之外的某些 PCRE 特性(如递归、\K、占有优先量词)。PHP/Python/Go 专有语法需要先转换。
贪婪和非贪婪有什么区别?.* 是贪婪的,会一路吃到最后一个可能的终点;.*? 是非贪婪的,碰到第一个能匹配的终点就停。比如对 "a","b" 用 ".*" 会整段吃掉,用 ".*?" 则分别得到 "a" 和 "b"。
匹配到的分组 $1 是按什么顺序编号的?按左括号出现的顺序,从 $1 开始;(?:...) 是非捕获组,不占编号。嵌套时外层组号小于内层。替换串里用 $1 $2 引用即可。
处理大文本会卡吗?有没有长度上限?匹配在本地实时进行,万行级日志通常无压力;但灾难性回溯(如嵌套量词 (a+)+ 遇到长串)会让浏览器卡住——遇到无响应先怀疑回溯,把嵌套量词改写为更精确的模式或占有式写法。