Регулярное выражение для MAC-адреса

Используйте /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/, чтобы проверить, что вся строка является корректным MAC-адресом. Каждый пример ниже проверен по шаблону, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/
Открыть в Regex Tester
ВводРезультат
00:1A:2B:3C:4D:5E✓ Совпадение
00-1a-2b-3c-4d-5e✓ Совпадение
001A2B3C4D5E✗ Нет совпадения
00:1A:2B:3C:4D✗ Нет совпадения
00:1G:2B:3C:4D:5E✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
[0-9A-Fa-f]{2}Две шестнадцатеричные цифры
[:-]Двоеточие или дефис как разделитель
(?:…){5}Пять пар с разделителями
[0-9A-Fa-f]{2}$Шестая пара

Примеры кода

JavaScript

const re = /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}', value))

PHP

preg_match('/^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/', $value) === 1;

Примечания и ограничения

Этот шаблон допускает смешанные разделители (00:1A-2B…). Захватите первый разделитель и используйте его через обратную ссылку — ^[0-9A-Fa-f]{2}([:-])(?:[0-9A-Fa-f]{2}\1){4}[0-9A-Fa-f]{2}$ — чтобы требовать единообразия.

Часто задаваемые вопросы

Какое регулярное выражение для MAC-адреса?
/^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/ — оно проверяет всю строку. Что делает каждая часть, см. таблицу выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: 00:1A:2B:3C:4D:5E, 00-1a-2b-3c-4d-5e. Остальные не совпадают.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образец текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.