跳到主内容
UniKit

正则表达式生成

从示例反推正则:给出该匹配与不该匹配的样本,用一组内置模式(邮箱 / URL / IP / 手机号 / 日期 / 时间 / 数字 / 中文 / 十六进制 / 身份证 / 邮政编码 / 自定义字符类)逐一筛选,命中结果与逐条样本的匹配情况一并给出,覆盖不了就明说。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

样本

候选模式按「能在样本里找到匹配」判断,不是整串匹配;命中结果按具体度从高到低排列,全部正例都命中且不误命中任何反例才算命中。

自定义字符类组合(可选)

勾选需要的字符集与长度,会额外生成一条整串匹配的正则参与筛选。

字符集
生成的正则^[a-z0-9]{6,}$
忽略大小写

反推结果

命中的正则

邮箱地址/[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+/u

常见的 user@host.tld 写法

  • ✓ alice@example.com

具体度: 95

标识符 / 英文单词/[A-Za-z_][A-Za-z0-9_]*/u

字母或下划线开头的英文标识符

  • ✓ alice@example.com

具体度: 10

接近但被否决的模式

自定义字符类组合/^[a-z0-9]{6,}$/u
  • ✗ alice@example.com · 漏掉的正例
URL/https?://[^\s"'<>]+/u
  • ✗ alice@example.com · 漏掉的正例
UUID/[0-9A-Fa-f]{8}-(?:[0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}/u
  • ✗ alice@example.com · 漏掉的正例
IPv4 地址/(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)/u
  • ✗ alice@example.com · 漏掉的正例
IPv6 地址/(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}/u
  • ✗ alice@example.com · 漏掉的正例
MAC 地址/(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}/u
  • ✗ alice@example.com · 漏掉的正例

这个工具能做什么

  • 手里只有几条「应该是这样」的样本,写不出正则:把样本贴进去,让内置模式先筛一遍,命中的直接拿走用。
  • 要区分「该匹配」与「不该匹配」时,用反例淘汰过于宽泛的模式——\d+ 能匹配手机号,但也会误伤普通编号,加了反例它就不会被推荐。
  • 定校验规则前先试算:给几条合法值和几条非法值,看有没有一条内置模式同时满足,再决定要不要自己写。
  • 快速拿到常见格式的正则(邮箱、URL、IP、身份证、邮政编码、日期时间、颜色、UUID…),并顺手知道它到底匹配什么、边界在哪。

示例

输入

要匹配的样本:alice@example.com
不该匹配的样本:not-an-email

输出

命中的正则:邮箱地址 /[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+/u(✓ alice@example.com);更宽泛的「标识符」模式虽然能匹配正例,但会误命中 not-an-email,因此只作为被否决的候选列出。

判断方式是「在样本里能找到匹配」而不是整串匹配;命中结果按具体度从高到低排列,邮箱排在标识符前面。

常见问题

为什么是「反推」而不是「输入一句话生成正则」?

内置模式表是有限的,工具只做一件事:逐条验证哪些模式真的同时满足你的正例与反例。一条都不满足时会明确说「内置模式无法覆盖这些样本」,而不是拼一条看起来对、实际会误伤的正则。想验证自己写的正则,用「正则测试器」更合适。

命中的模式是整串匹配吗?

不是。内置模式按「在样本里能找到匹配」(search 语义)判断,所以 \d+ 会匹配 abc123 里的 123。需要整串校验(比如「6–12 位小写字母或数字」)就用「自定义字符类组合」,它生成的模式带 ^ 与 $,例如 ^[a-z0-9]{6,12}$。

为什么同一个样本会命中好几条模式?

因为它们都满足你的约束,只是宽严不同:邮箱模式比标识符模式具体得多。结果按具体度排序,越具体的越靠前。想只留下一条,就补几条反例,把过宽的模式筛掉——这也是反例比正例更有用的原因。

自定义字符类组合有什么用?

内置模式覆盖不了「固定长度 + 指定字符集」这类要求时,勾选字符集(大小写字母、数字、下划线、中文、空白、连字符)和长度上下限,工具会生成一条整串匹配的正则,并与内置模式一起参与筛选。连字符固定放在字符类末尾,避免 [a-z-0-9] 被解释成范围而报错。

样本数量有限制吗?

最多 100 条样本、单条最长 200 个字符,空行会被忽略。超过限制会直接提示而不是悄悄截断,因为少几条样本就可能得出完全不同的结论。

关键词:regex generatorregex from examplespattern generatorregular expressionsample based regex正则生成正则表达式生成反推正则正则表达式示例生成正则

同类工具