Методы isMACAddress

Validator.js предоставляет набор утилит для проверки строковых значений на соответствие формальным форматам, и isMACAddress относится к группе методов валидации сетевых идентификаторов. MAC-адрес (Media Access Control address) используется для уникальной идентификации сетевых интерфейсов на канальном уровне и обычно представлен в виде шестибайтной последовательности.

Метод isMACAddress применяется для проверки строки на соответствие допустимому формату MAC-адреса с учётом различных стандартов представления и уровней строгости.


Общая сигнатура

isMACAddress(str [, options])
  • str — строка, подлежащая проверке
  • options — необязательный объект конфигурации, определяющий правила валидации

Возвращаемое значение:

  • true — строка соответствует MAC-адресу
  • false — строка не соответствует формату

Форматы MAC-адресов

Валидация охватывает несколько распространённых форм представления:

Колонковый формат (IEEE 802)

01:23:45:67:89:ab

Дефисный формат (Windows)

01-23-45-67-89-AB

Точечный формат (Cisco)

0123.4567.89ab

Без разделителей

0123456789ab

Поддержка конкретного формата зависит от параметров вызова.


Параметры options

no_separators

{ no_separators: true }

Ограничивает проверку только строками без разделителей.

Пример:

isMACAddress('0123456789ab', { no_separators: true }) // true
isMACAddress('01:23:45:67:89:ab', { no_separators: true }) // false

eui

{ eui: '48' } // или '64'

Определяет тип адреса:

  • EUI-48 — классический MAC-адрес (6 байт)
  • EUI-64 — расширенный формат (8 байт)

Пример:

isMACAddress('01:23:45:67:89:ab', { eui: '48' }) // true
isMACAddress('01:23:45:67:89:ab:cd:ef', { eui: '48' }) // false

isMACAddress('01:23:45:67:89:ab:cd:ef', { eui: '64' }) // true

Регистрозависимость

Метод не чувствителен к регистру символов A–F:

isMACAddress('01:23:45:67:89:AB') // true
isMACAddress('01:23:45:67:89:ab') // true

Поведение при некорректных данных

К невалидным значениям относятся:

  • строки с недопустимыми символами
  • неправильное количество октетов
  • смешанные разделители
  • пустые строки и null (в зависимости от предварительной обработки библиотеки)

Примеры:

isMACAddress('01:23:45:67:89')        // false (неполная длина)
isMACAddress('01:23:45:67:89:zz')     // false (недопустимые символы)
isMACAddress('01:23-45:67:89:ab')     // false (смешанные разделители)

Особенности нормализации

Метод не преобразует входные данные, а только проверяет их соответствие. Любая нормализация (например, приведение к нижнему регистру или удаление разделителей) должна выполняться отдельно.


Примеры использования

Проверка сетевого интерфейса

const mac = '00:1A:2B:3C:4D:5E';

if (isMACAddress(mac)) {
  console.log('Корректный MAC-адрес');
}

Строгая проверка EUI-48

const valid = isMACAddress('00-1A-2B-3C-4D-5E', { eui: '48' });

Проверка входных данных API

function validateDevice(data) {
  return isMACAddress(data.mac, { eui: '48' });
}

Типичные ошибки при использовании

1. Игнорирование формата разделителей

Разные системы используют разные разделители, и без учёта этого параметра возможны ложные отрицания.

isMACAddress('01-23-45-67-89-ab') // false при ожидании ':' формата

2. Неверный выбор EUI-типа

EUI-64 адреса часто путают с расширенными MAC-адресами, что приводит к ошибочной валидации.


3. Попытка валидации IP-адресов

Метод не предназначен для сетевых адресов уровня IPv4/IPv6, несмотря на схожесть синтаксических паттернов.


Сравнение режимов валидации

Режим Пример Результат
Без опций 01:23:45:67:89:ab true
no_separators 0123456789ab true
eui: '48' 01:23:45:67:89:ab true
eui: '64' 01:23:45:67:89:ab false

Практическое применение валидации

Валидация MAC-адресов используется в:

  • сетевых утилитах администрирования
  • системах авторизации устройств
  • фильтрации сетевого трафика
  • настройках DHCP и ARP-таблиц
  • IoT-платформах и телеметрии

Взаимодействие с другими методами Validator.js

isMACAddress часто используется совместно с:

  • isIP — проверка IP-адресов устройств
  • isUUID — идентификация устройств в распределённых системах
  • isJSON — валидация структурированных конфигураций

Поведение в цепочках валидации

При построении пайплайнов валидации MAC-адрес обычно проверяется до нормализации данных, чтобы исключить лишние преобразования некорректных строк.

function validateNetworkRecord(record) {
  if (!isMACAddress(record.mac, { eui: '48' })) {
    return false;
  }

  return true;
}

Ограничения метода

  • не определяет принадлежность MAC-адреса к конкретному производителю (OUI)
  • не выполняет сетевую проверку существования устройства
  • не различает виртуальные и физические интерфейсы
  • не анализирует зарезервированные диапазоны