正则表达式 Mac 地址:排除错误值

Regex MacAddress: exclude fake values

我使用正则表达式 ^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$,它工作正常。

问题是有时我会得到像这样的假值:00:00:00:00:00:00

我尝试搜索算法并了解到,没有明确的验证算法。但我想排除明确的虚假值,如 00:00:00:00:00:0011:11:11:11:11:11... 99-99-99-99-99-99

有人可以帮助我找到这样的正则表达式吗?谢谢

您可以使用

^(?!(\d)(?:[:-]?)*$)([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

参见regex demo

您可以使用 ^(?!(\d)(?:[:-]?)*$)(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$ 摆脱捕获组。

详情

  • ^ - 字符串开头
  • (?!(\d)(?:[:-]?)*$)
  • (?:[0-9A-Fa-f]{2}[:-]){5} - 两个十六进制字符重复五次,后跟 :-
  • [0-9A-Fa-f]{2} - 两个十六进制字符
  • $ - 字符串结尾。