有效 MAC 地址的正则表达式:不是 88|87|FF|00

Regex for valid MAC addresses : not 88|87|FF|00

一个"valid"MAC地址是6组十六进制字符对,用破折号或冒号分隔。

示例:

3D-F2-C9-A6-B3-4F
08:F2:C9:A6:B3:4F

但是,"invalid" MAC 地址包含 00FF8887.[=19 的十六进制对=]

示例:

00-00-00-00-00-00
FF-FF-FF-FF-FF-FF
88-88-88-88-87-88

这是我目前得到的:

(?!8)([0-9A-F]{2})([:-][0-9A-F]{2}){5}

但是不知道为什么,我不能使用:

(?!88|87|FF|00)

对于正则表达式的否定部分。

注意: 不是重复的 SO 条目,因为它会查找无效的十六进制对并排除它们。

对整个输入使用负面展望:

^((?!00|FF|88|87)[0-9A-F]{2}([:-]|$)){6}$

参见live demo

请注意如何通过对分隔符或输入结尾使用交替来简化正则表达式。