正则与文本处理指南
构造正则前转义用户文本:避免把文字当表达式
区分字面搜索与正则搜索,处理 JavaScript 字符串和表达式的不同转义层。
元字符改变含义
点号在正则中匹配任意字符,圆括号定义分组,文件名直接填入表达式可能匹配无关文字。
字面搜索应转义元字符或采用字符串搜索 API,无需把每次用户搜索都变为正则。
Literal: file(1).json
Pattern: file\(1\)\.json区分源码字符串转义
表达式输入框直接接受模式,传给 RegExp 的 JavaScript 字符串先经过一层字符串解析。
排查时并列核对这两种写法,JSON 配置中的模式还需遵循 JSON 字符串转义。
Pattern field: \d+
JavaScript: new RegExp("\\d+")使用成熟的转义实现
较新的 JavaScript 环境提供 RegExp.escape,用于准备构造正则所需的字面文本,使用前检查兼容性或采用成熟兼容实现。
临时替换规则可能漏掉嵌入大表达式时的上下文问题,JSON 字符串转义也不等于正则转义。
测试包含语法符号的字面输入
字面搜索样例应包含方括号、反斜杠、美元符号和长文本,它们应匹配自身,而非充当正则语法。
如果产品确实允许正则,明确提供模式并限制输入与执行时间,转义和运行限制解决不同问题。