正则与文本处理指南
正则回溯:识别危险模式并限制输入
识别歧义重复模式,为校验限定输入,避免在浏览器运行超长危险样例。
寻找歧义重复
嵌套或重叠重复可能让回溯引擎探索同一输入的多种切分方式。
末尾失败的近似匹配可能比成功样例慢很多,短合法样例不能证明运行安全。
Ambiguous example: ^(a+)+$
Simpler equivalent for this language: ^a+$
Use only short inputs when inspecting the first pattern.简化可接受语言
嵌套重复没有增加真实语法要求时,可改为单次重复;复杂格式优先解析器或安全正则引擎。
完整值校验应锚定并采用具体字符类,但锚点本身无法消除回溯。
限制输入与执行时间
对不可信文本先限制长度,服务端尽量隔离计算或使用复杂度可预期的引擎。
本站正则测试在 Worker 中运行,执行上限 1.5 秒;这保护页面,不会保护复制到后端的表达式。
不要假设所有工具都有隔离
本站查找替换与正则测试走不同执行路径,不要用替换工具压测可疑模式。
先审查模式,再在隔离环境测受控小样例,并把接近成功但失败的输入纳入生产验证。