首页 / 指南中心 / 正则表达式上线前复核:匹配、反例和性能边界
正则表达式上线前复核:匹配、反例和性能边界
提供正则表达式上线前的检查清单,覆盖反例、flags、转义、换行和回溯性能风险。 包含使用场景、输入输出检查、常见错误和相关工具入口,适合复制结果前快速复核。
不要只准备能匹配的样例
正则表达式最常见的上线风险,是只验证了应该匹配的字符串,没有验证不应该匹配的字符串。邮箱、URL、价格、版本号、日志行、配置键和用户输入都可能有边界情况。每条规则至少需要准备正例、反例、空输入、异常长度、包含换行的输入和包含特殊字符的输入。
上线前检查项
- 是否正确使用开始和结束边界,避免只匹配局部片段。
- 是否明确大小写、全局匹配、多行和 dotAll 等 flags。
- 反斜杠在 JavaScript 字符串、JSON 字符串和正则字面量中的转义是否不同。
- 是否存在嵌套量词或过宽的贪婪匹配,可能造成灾难性回溯。
- 是否限制最大输入长度,避免用户输入拖垮处理过程。
目标运行时差异
不同语言的正则语法并不完全一致。JavaScript、Python、Java、PHP、Go 和数据库正则在命名捕获、lookbehind、Unicode 类、换行处理和 flags 上可能不同。在线测试器能帮助设计思路,但上线前必须在目标语言和目标版本里运行同一批样例。
复核输出
把最终正则和样例一起记录在 issue 或文档里,说明它用于过滤、提取、校验还是高亮。用途不同,允许的宽松程度也不同;过滤规则过宽会放过错误输入,提取规则过窄会漏掉合法数据。