为什么匹配数量会有上限?
某些正则(例如嵌套量词 (a+)+$)在特定输入上会触发灾难性回溯,耗时呈指数增长,可能让页面直接失去响应。本工具默认最多返回 2000 个匹配,超出后会明确提示「已截断」,避免卡死。
实时高亮匹配、捕获组、替换预览与常用模式库
输入测试文本后,命中的内容会在这里高亮替换结果会显示在这里正则表达式的难点在于「看不见匹配到了什么」。本工具在输入的同时把所有命中片段高亮出来,并逐条列出每个匹配的位置、完整内容、编号捕获组与命名捕获组(例如 (?<year>\d{4})),让你一眼看出贪婪匹配、边界断言或可选分组是否符合预期。
内置 12 组常用模式——邮箱、URL、IPv4、中文字符、中国大陆手机号、日期、时间、HTML 标签、十六进制颜色、重复单词、行尾空白、信用卡号脱敏,可以直接载入修改。所有匹配都由浏览器的 RegExp 引擎执行,与你在代码里写的完全一致;同时设置了匹配数量上限,避免灾难性回溯把页面卡死。
某些正则(例如嵌套量词 (a+)+$)在特定输入上会触发灾难性回溯,耗时呈指数增长,可能让页面直接失去响应。本工具默认最多返回 2000 个匹配,超出后会明确提示「已截断」,避免卡死。
不加 g 时正则只返回第一个匹配,且正则对象不保存位置;加了 g 之后会从头到尾找出所有匹配。替换时同样如此:不加 g 只替换第一处。本工具默认勾选 g,与日常「全部高亮」的预期一致。
核心语法一致,但细节有差异:JavaScript 支持 (?<name>…) 命名组与后行断言 (?<=…),而 POSIX 与部分语言的语法不同;Python 的 \A、\Z 在 JavaScript 中无效。本工具执行的是 JavaScript(ECMAScript)语法,与 Node.js、浏览器代码完全一致。