正则表达式指南:JavaScript 标志、捕获分组与替换
把正则写进业务代码前,可以先用真实文本检查匹配结果。本工具采用 JavaScript 正则引擎;在这里通过的表达式不代表可以原样用于 Java、Python 或 Go,跨语言使用前需要核对语法与行为。
操作步骤
- 输入表达式与标志,再粘贴测试文本。
- 在匹配预览中查看高亮范围和捕获分组。
- 切换替换模式预览替换结果,或切换提取模式选择分组并导出。
- 加入应该匹配和不应该匹配的案例,也检查空文本和多行输入,再用于业务代码。
可直接测试的示例
Pattern: (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
Flags: g
Text: 2026-10-07 / 2024-02-29
Replacement: $<day>/$<month>/$<year>标志与捕获分组
g 用于匹配多处,i 忽略大小写,m 改变行首行尾锚点的行为,s 允许点号匹配换行符。命名捕获分组便于阅读提取或替换规则。替换文本可用 $1 引用编号分组,用 $<name> 引用命名分组。
匹配成功不等于完整校验
匹配日期格式的正则只检查文本形状,不能证明日期真实存在。还应确认业务允许局部匹配,还是需要锚定整个输入。过长输入或大量回溯的表达式可能触发时间或结果限制,建议缩小样本或简化规则。
常见问题
为什么只匹配到第一处?
需要匹配多处时,检查是否启用了 g 标志。
为什么日期正则能匹配不存在的日期?
数字模式校验的是格式,不是日历规则;需要验证日期有效性时,应再使用日期解析逻辑。