工具说明
正则表达式用一段模式描述文本中的匹配位置。工具直接使用浏览器 JavaScript RegExp,支持常用 flags、命名分组、全局匹配和高亮,并提供可修改的模板用于邮箱、URL、数字等常见结构。
正则适合识别局部文本模式,不是通用解析器。嵌套语法、完整 HTML、不同方言的日期或自然语言通常更适合专用解析库;过于宽泛或存在灾难性回溯的表达式还会让长文本明显卡顿。
使用步骤
输入模式和 flags
模式不要包含宿主语言的外层斜杠;按需要开启 g、i、m、s、u 或 y。
提供代表性测试文本
同时加入应匹配、边界情况和不应匹配的样本,避免只验证成功路径。
检查高亮与分组
确认匹配次数、完整片段和捕获组,再复制到目标代码并保留同样 flags。
输入与输出示例
命名分组让匹配结果可以按名称取用,比记住第几个括号更可靠。
/(?<year>\d{4})-(?<month>\d{2})/g
2026-08 起效,2027-01 到期匹配 1: 2026-08 year=2026 month=08
匹配 2: 2027-01 year=2027 month=01支持范围与限制
- 正则方言
- JavaScript 的 RegExp。Python、PCRE、Java 的部分语法在这里不适用
- 支持的 flags
- g 全局、i 忽略大小写、m 多行、s 点匹配换行、u Unicode、y 粘连
- 命名分组
- 支持 (?<name>...) 命名捕获,结果中按名称展示
- 不支持的语法
- 递归匹配、条件匹配、部分 PCRE 独有的断言写法
- 性能陷阱
- 嵌套量词(如 (a+)+)在不匹配的长输入上会导致灾难性回溯,页面可能卡住
- 处理位置
- 在浏览器内用原生 RegExp 执行,测试文本不上传
典型使用场景
清理日志与列表
定位时间戳、ID、空白行或固定前缀,配合代码做替换和提取。
验证输入形状
对格式有限且规则稳定的编号、路径或标记做客户端快速检查。
把线上匹配失败的用例复现出来
线上正则漏匹配或误匹配时,把实际输入贴进来逐步调整,比改代码重新部署快得多。
使用前需要知道的事
- JavaScript 正则与 PCRE、Python、Java 的语法和特性不完全相同,跨语言使用前要重新测试。
- 没有 g flag 时通常只返回第一个匹配;需要查看全部结果时应开启全局模式。
- 不要用一个巨大正则完整解析 HTML、XML 或编程语言,结构化解析器更可靠。
相关概念
- capture group
- 用括号记录匹配的一部分,命名分组可通过名称读取,便于后续替换或提取。
- catastrophic backtracking
- 某些重复与分支组合会产生指数级尝试,使特定输入占用大量 CPU。