正则与文本处理指南
正则匹配不上:锚点、标志与转义排查
用命中和不命中的输入复现问题,检查整串匹配、大小写、多行模式与字符串转义。
先准备最小输入
能匹配子串的表达式,不一定能校验整个值。以简单的 ASCII 用户名规则为例,应明确起止边界,并同时准备应命中与不应命中的输入。
下面的规则允许 3–16 个 ASCII 字母、数字或下划线,只是示例,不是通用用户名规范。
Pattern: ^[A-Za-z0-9_]{3,16}$
Pass: dev_42
Fail: ab
Fail: dev-42检查标志
i 忽略大小写,g 查找多个匹配,m 让 ^ 与 $ 使用行边界,s 让点号匹配换行符。
m 应明确使用:多行文本中某一行合法,也可能命中带锚点的表达式。如果目的是校验单个值,必须检查完整输入以及换行。
Input: cat
CAT
Pattern: cat
Flags g: cat
Flags gi: cat, CAT区分正则与字符串的转义层
正则字面量 /\d+/ 中只有一层反斜杠;new RegExp("\\d+") 先经过 JavaScript 字符串解析,多出一层转义。JSON 字符串也有自己的转义规则。
工具的表达式输入框应填工具所需的表达式,不应盲目带上源码的引号和斜杠。本站使用 JavaScript 正则引擎,PCRE、Go 和 Python 的语法或行为可能不同。
Regex literal: /\d+/
JS constructor: new RegExp("\\d+")
Pattern field: \d+不要只验证成功样例
根据规则补充空值、接近正确的值、换行、长输入和 Unicode。每次只改一个表达式片段,便于定位原因。
嵌套且含糊的量词可能造成灾难性回溯,应简化表达式并设置输入限制。本站测试器在独立 Worker 中运行且有超时限制;页面测试通过不等于生产性能已验证。