«Действительный» MAC-адрес - это 6 групп шестнадцатеричных пар символов, разделенных тире или двоеточием.Regex для действительных MAC-адресов: не 88 | 87 | FF | 00
Пример:
3D-F2-C9-A6-B3-4F
08:F2:C9:A6:B3:4F
Тем не менее, "недействительный" МАС-адрес содержит шестнадцатеричные пары, которые являются 00
, FF
, 88
или 87
.
Пример:
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' или что вся строка не может быть '87-87-87-87-87-87'. ? – Dai
Нет, этот вопрос имеет специальное дополнительное правило для 4-байтовых шаблонов, и это именно тот шаблон, который вызывает проблему здесь. – MSalters
Зачем вам нужно делать это в одном регулярном выражении? Подтвердите MAC-адрес, а затем проверьте недействительные комбинации, используя группы захвата из этого первого теста. –