Flags ?
无匹配结果
工具说明
关于正则表达式测试器
Regex Tester 用来在文本上实时测试 JavaScript 正则表达式,查看匹配结果、捕获组和索引位置。
适合调试邮箱、URL、日志行、提取规则和表单校验模式,全部在浏览器本地执行。
如何使用 Regex Tester
- 输入正则表达式,不需要外层 / /。
- 按需开启 g、i、m、s、u、y flags。
- 粘贴测试文本,查看每个匹配、捕获组和位置。
常见使用场景
- 验证表单校验规则是否误伤合法输入。
- 从日志或文本中提取 ID、URL、错误码。
- 比较 greedy 与 lazy 量词对匹配范围的影响。
Flags、捕获组和常见坑
JavaScript 正则对 flags、转义和量词非常敏感。一个少写的反斜杠或过宽的 .* 都可能让结果完全不同。
- g 会返回所有匹配;没有 g 时通常只看第一个。
- i 忽略大小写,m 让 ^ 和 $ 按行匹配。
- 括号会创建 capture group;(?: ) 可避免不需要的捕获。
- 复杂回溯可能让长文本变慢,避免过多嵌套量词。
正则测试常见问题
- 要输入 /pattern/g 这种写法吗?
- 不用。这里只输入 pattern,flags 在单独控件里设置。
- 为什么匹配范围比预期更长?
- 常见原因是 .* 或 .+ 默认贪婪,可尝试 .*? 或更具体的字符类。
- 测试文本会上传吗?
- 不会。匹配在浏览器本地执行,不会上传到 wetool.site。
Regex Tester 与生产校验
在线测试能快速验证模式,但生产校验还要覆盖边界用例、空值、Unicode 输入和后端使用的正则引擎差异。
灾难性回溯排查清单
一个能匹配的小正则也可能在长输入上卡住。上线前尤其要检查嵌套量词和过宽的通配符。
- 避免 (.*)+、(.+)+、(a|aa)+ 这类容易爆炸的嵌套或重叠模式。
- 能写成明确字符集时,不要默认用 .*;例如用 [^,]* 代替贪婪跨字段匹配。
- 对用户可控输入做长度限制,并在服务端设置超时或使用支持安全执行的正则引擎。
JavaScript 正则与其他语言差异
在线测试通过不代表能直接搬到后端。不同语言的正则引擎在 flags、lookbehind、Unicode 和命名捕获上可能不同。
- JavaScript 的 g、i、m、s、u、y flags 与 PCRE、Python、Go 的选项并不完全等价。
- Lookbehind、Unicode property escapes、named groups 在旧浏览器或部分后端环境中可能不可用。
- 迁移到后端前,用目标语言的单元测试覆盖空值、长输入、emoji 和换行场景。