正则反向生成

概述

正则反向生成工具接收一个正则表达式,输出一批符合该表达式的匹配字符串示例,帮助开发者直观验证正则逻辑是否符合预期、理解表达式的覆盖范围。生成数量可在 10–1000 之间调节,结果列表实时展示,无需额外点击。

正则表达式如何转化为匹配字符串

工具使用 regex-to-strings 库枚举表达式的所有可展开路径,再从中抽取指定数量的样本。结果面板标题格式为"当前显示数 / 可能匹配总数",例如"10 / 468"表示该正则理论上有 468 种不同匹配,当前展示前 10 个。

以默认示例为例:

输入 /(((555) ?)|(555-))?d{3}-d{4}/ 可能生成:

  • 555 234-5678
  • 555-012-3456
  • 789-1234
  • 555 901-2345
  • 345-6789

这些字符串都满足"可选的 555 前缀 + 三位数字 + 连字符 + 四位数字"的规则,展现了量词 ? 和分组选择 | 的不同组合路径。

哪些正则语法可以被展开

工具支持以下常见结构的穷举展开:

  • 字符组 [abc]、字符范围 [a-z]
  • 有界量词 {n}{n,m}
  • 可选项 ?
  • 分组与选择 (a|b)
  • 字符类 \d(等价于 [0-9])、\w(等价于 [a-zA-Z0-9_]

含无限量词(如 +*{2,})的表达式在理论上有无数匹配,工具会截断到所设上限生成有代表性的样本。

生成数量与可读性的权衡

表达式语法错误的提示

工具在生成前会用浏览器原生 RegExp 构造函数对输入做语法验证。如果正则语法本身不合法(如未闭合的括号、非法转义),会在提交前弹出错误提示并显示具体的错误原因,不会进入生成流程。