正则与文本处理指南

构造正则前转义用户文本:避免把文字当表达式

区分字面搜索与正则搜索,处理 JavaScript 字符串和表达式的不同转义层。

Nav Tools ·

元字符改变含义

点号在正则中匹配任意字符,圆括号定义分组,文件名直接填入表达式可能匹配无关文字。

字面搜索应转义元字符或采用字符串搜索 API,无需把每次用户搜索都变为正则。

Literal: file(1).json
Pattern: file\(1\)\.json

区分源码字符串转义

表达式输入框直接接受模式,传给 RegExp 的 JavaScript 字符串先经过一层字符串解析。

排查时并列核对这两种写法,JSON 配置中的模式还需遵循 JSON 字符串转义。

Pattern field: \d+
JavaScript: new RegExp("\\d+")

使用成熟的转义实现

较新的 JavaScript 环境提供 RegExp.escape,用于准备构造正则所需的字面文本,使用前检查兼容性或采用成熟兼容实现。

临时替换规则可能漏掉嵌入大表达式时的上下文问题,JSON 字符串转义也不等于正则转义。

测试包含语法符号的字面输入

字面搜索样例应包含方括号、反斜杠、美元符号和长文本,它们应匹配自身,而非充当正则语法。

如果产品确实允许正则,明确提供模式并限制输入与执行时间,转义和运行限制解决不同问题。

参考资料

← 正则与文本处理指南