Mac 地址 RegEx 过滤掉坏 Macs

Mac Address RegEx to filter out Bad Macs

我有一个第 3 方应用程序,它有一个 MAC 地址字段,我只能将 RegEx 应用于数据验证。我有一个用于验证长度、十六进制和 dashes/colons 的正则表达式。我的绊脚石是试图阻止输入所有相同的字符,全 0、全 1 等

这是我目前拥有的:

/^(?:[A-Fa-f0-9]{2}([-:]{0,1}))(?:[A-Fa-f0-9]{2}){4}[A-Fa-f0-9]{2}$/

在 PCRE 中,您可以使用否定先行来禁止某些特定模式。

/^(?!(.)(?:[-:]?)+$)[A-Fa-f0-9]{2}([-:]?)(?:[A-Fa-f0-9]{2}){4}[A-Fa-f0-9]{2}$/

请注意,我还稍微重构了您的正则表达式。

所有部分匹配同一个字符class。您还可以使用负先行 (?!.*([A-Fa-f0-9])) 开始模式,以检查使用另一个反向引用后是否没有 2 个相同的字符。

然后您当前的反向引用将从 </code> 增加到 <code>

^(?!.*([A-Fa-f0-9]))(?:[A-Fa-f0-9]{2}([-:]?))(?:[A-Fa-f0-9]{2}){4}[A-Fa-f0-9]{2}$

Regex pattern