正则表达式测试器

测试正则表达式匹配结果

Flags ?
测试文本
匹配结果
无匹配结果

工具说明

关于正则表达式测试器

Regex Tester 用来在文本上实时测试 JavaScript 正则表达式,查看匹配结果、捕获组和索引位置。

适合调试邮箱、URL、日志行、提取规则和表单校验模式,全部在浏览器本地执行。

如何使用 Regex Tester

  1. 输入正则表达式,不需要外层 / /。
  2. 按需开启 g、i、m、s、u、y flags。
  3. 粘贴测试文本,查看每个匹配、捕获组和位置。

常见使用场景

  • 验证表单校验规则是否误伤合法输入。
  • 从日志或文本中提取 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 和换行场景。