В таком формате:
3D:F2:C9:A6:B3:4F
или:
3D-F2-C9-A6-B3-4F
Стандартный (IEEE 802) формат для печати адресов MAC-48 в удобной для человека форме - это шесть групп из двух шестнадцатеричных цифр, разделенных дефисами
-
или двоеточиями:
.
Так:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Немного тяжеловато для глаз, но это:
будет применять либо все двоеточия, либо все тире для вашей нотации MAC.
(Более простой подход с использованием регулярных выражений может разрешить
A1:B2-C3:D4-E5:F6
, например, что вышеупомянутое отклоняет.)источник
:xdigit:
- это сокращение от шестнадцатеричной цифры, более или менее другой способ сказать[a-fA-F0-9]
.\1
Относится к группе захвата для первого тире или двоеточия([-:])
, и соответствует только то , что соответствует , что в первый раз.:xdigit:
(даже при том, что это «сокращение» только короче,[a-fA-F0-9]
а эквивалент/[a-f0-9]/i
короче!)C8:FD:19:55:E6:3A
не работает? Это настоящий MAC-адрес. Я изменил ваше регулярное выражение, чтобы принимать:
только/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Спасибо!Это регулярное выражение соответствует практически всем форматам Mac, включая формат Cisco, например
0102-0304-abcd
Примеры строк, которым он соответствует:
Смешанный формат также будет соответствовать!
источник
aa.aa.bbbb.cccc
, например , что он будет принимать ./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
и найдите строку BSSID, если какой-либо октет меньше 0x10, начальный ноль будет отброшен (%x
или%2x
вместо%02x
printf
формата используется?)разделитель: " : ", " - ", " . "
двойной или одинарный: 00 = 0, 0f = f
или
источник
{1,2}
регулярном выражении[0-9a-F]
вероятно, следует переписать как:[0-9a-fA-F]
Имейте в виду, что свойство Unicode
\p{xdigit}
включает версии FULLWIDTH. Вы могли бы предпочесть\p{ASCII_Hex_Digit}
.На заданный вопрос лучше всего ответить - при условии, что у вас установлен некий почтенный модуль CPAN - набрав:
Я показываю конкретный образец, который он выводит здесь, как счастливый образец номер 13; есть много других.
Эта программа:
генерирует этот вывод:
Это похоже на то, что вы ищете.
источник
Эта ссылка может вам помочь. Вы можете использовать это:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
источник
См. Также этот вопрос .
Регулярные выражения следующим образом:
источник
источник
Версия python может быть:
источник
Регулярное выражение выше проверяет все типы MAC-адресов ниже:
источник
для PHP разработчика
источник
Большое спасибо @Moshe за отличный ответ выше. Проведя еще несколько исследований, я хотел бы добавить свои дополнительные результаты, как в отношении IEEE 802, так и в отношении обеспечения согласованного использования разделителя в регулярном выражении.
Полная благодарность @Moshe за его первоначальное заявление и @pilcrow за указание на то, что IEEE 802 распространяется только на обман.
Вот регулярное выражение, которое применяет тот же разделитель во всем MAC-адресе:
Regex101 демо
А вот еще один, который позволяет вообще не использовать разделитель:
Regex101 демо
источник
Я не думаю, что основной RegEx правильный, поскольку он также классифицирует
как действительный MAC-адрес, даже если он неверен. Правильным будет:
Так что каждый раз вы можете выбрать «:» или «-» для всего MAC-адреса.
источник
Вы можете использовать следующую процедуру, передав MAC-адрес для проверки,
источник
Люди PHP:
Требуется объяснение: http://regex101.com/r/wB0eT7
источник
Если вам нужны пробелы между числами, как в этом варианте
Регулярное выражение изменится на
источник
для соответствия 48-битным MAC-адресам EUI-48 и 64-битным EUI-64:
где \ h - символ в [0-9a-fA-F]
или:
это позволяет использовать '-' или ':' или не использовать разделитель
источник
Может быть, самый короткий:
Обновление : существует лучший способ проверки MAC-адресов в PHP, который поддерживает MAC-адреса в стиле дефис и двоеточие. Используйте filter_var () :
Насколько я знаю, он поддерживает MAC-адреса в следующих формах (x: шестнадцатеричное число):
источник
Поскольку MAC-адрес может быть 6 или 20 байтов (бесконечная строка, ...), правильный ответ:
вы можете заменить: на [: -.]? если вам нужны разные разделители или нет.
источник
Это маленький:
Имейте в виду, что это странное сочетание нескольких символов или разделителей могло пройти.
источник
лучший ответ - для регулярного выражения проверки MAC-адреса
источник