从示例生成正则

为订单号、发票参考号或日期手写正则既繁琐又容易出错。粘贴一个符合你想识别格式的示例字符串,本工具会从左到右读取它,将每一段连续的数字、大写字母和小写字母转换为长度合适的字符类,并把标点和符号保留为字面字符。你会得到一个带锚点的模式作为起点,再手动细化。

工作原理

  1. 1

    输入一个示例

    键入或粘贴一个代表你想识别格式的示例字符串,例如 `Order #12345 placed on 2026-04-16`。

  2. 2

    生成模式

    工具逐字符遍历示例,并将每一段同类字符替换为带其长度的字符类。

  3. 3

    阅读拆解

    模式下方会有一份组件列表解释每个部分,让你看清哪一段识别的是数字、字母还是字面文本。

  4. 4

    复制并细化

    将该模式作为起点。手动调整固定长度或字符类,使其覆盖你真实数据的完整范围。

模式是如何构建的

工具从左到右读取示例。每当遇到一段同类字符,就输出一个与该段等长的字符类:

  • 一段数字变为 \d{n},其中 n 是数字个数
  • 一段大写字母 A-Z 变为 [A-Z]{n}
  • 一段小写字母 a-z 变为 [a-z]{n}
  • 单个空格变为 \s,多个空格变为 \s{n}
  • 其他所有字符(标点、符号、带重音或非拉丁字母)都保留为转义的字面字符

生成的模式会用 ^$ 包裹,以便从头到尾匹配整个字符串,而不仅仅是其中一段。

示例

对于示例 Order #12345 placed on 2026-04-16,工具生成:

/^[A-Z]{1}[a-z]{4}\s\#\d{5}\s[a-z]{6}\s[a-z]{2}\s\d{4}\-\d{2}\-\d{2}$/

Order 是一个大写字母后跟四个小写字母;12345 变为 \d{5};日期 2026-04-16 变为 \d{4}\-\d{2}\-\d{2}

它能做什么,不能做什么

  • 长度是固定的。 12345 变为 \d{5},它匹配的正好是五位数字,而不是“一位或多位”。如果你的数据中数量会变化,请手动把 {5} 改为 + 或像 {3,8} 这样的范围。
  • 它基于单个示例工作。 它反映你所给的那一个字符串的结构,因此无法自行从多个示例中归纳。请给它最有代表性的字符串。
  • 只有 A-Za-z 才算字母。 带重音和非拉丁字符会保留为字面字符;如果你想让它们匹配更大的集合,请换成像 \w\p{L} 这样的字符类。
  • 正则无法表达一切。 像配对括号这样的东西超出了任何正则的能力范围,无论你给多少示例。对于嵌套结构,你需要的是解析器,而不是模式。

一个好的工作流程

  1. 从一个清晰、有代表性的示例生成模式。
  2. 在长度会变化的地方放宽固定长度({5} 改为 +{3,8})。
  3. 把模式粘贴到正则测试器中,用更大的一组真实字符串测试。
  4. 反复调整,直到它匹配所有该匹配的,而不匹配任何不该匹配的。

常见问题

一个。生成器读取单个示例字符串并反映其结构。请选择最能代表你格式的字符串,然后为其他情况手动扩展模式。

工具会数出你示例中确切的字符数,所以五位数字变为 \d{5}。如果真实数据中数量会变化,请把 {5} 换成 +* 或像 {3,8} 这样的范围。

锚点让模式从头到尾匹配整个字符串。如果你想在更长的文本中查找该模式,请去掉它们。

它把 A-Za-z 识别为字母。其他任何字符,包括带重音字母、西里尔字母或中日韩字符,都会保留为字面字符。如果你想匹配更多,请手动换成像 \w\p{L} 这样的字符类。

标准语法(\d[A-Z]{n}),在 PCRE、JavaScript、Python 以及大多数引擎中无需改动即可使用。

相关工具

此工具还提供其他语言版本