Извлечь MAC-адрес из строки в javascript

У меня есть приложение node.js, которому нужно извлечь MAC-адрес из строки.

var str = "bridge=vmbr1,virtio=32:65:63:62:36:35";

Проблема заключается в том, что строка динамическая - она ​​не всегда в таком формате. Он также может появиться как...

var str = "bridge=vmbr1,virtio=32:65:63:62:36:35,firewall=1";

... среди многих других вариаций. По этой причине использование чего-то вроде разделения или подстроки не сработает. Я предполагаю, что мне может понадобиться использовать некоторое регулярное выражение, чтобы извлечь только часть 32:65:63:62:36:35 из строки.

Любая помощь приветствуется.


person user1710563    schedule 14.05.2016    source источник


Ответы (2)


/([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})/

Регулярное выражение для соответствия публичному листингу группы стандартов Mac IEEE Std 802.1D и IEEE Std 802.1Q Зарезервированные адреса.

Стандартный (IEEE 802) формат для печати адресов MAC-48 в удобной для человека форме — это шесть групп из two hexadecimal digits, разделенных дефисом - или двоеточием :.


string = "bridge=vmbr1,virtio=32:65:63:62:36:35,firewall=1";
result = string.match(/([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})/);
document.write(result[0])

person Pedro Lobito    schedule 14.05.2016

Попробуй это:

str = "bridge=vmbr1,virtio=32:65:63:62:36:35,firewall=1";
str.match(/([0-9A-F]{2}:?){6}/g);

// output
// ["32:65:63:62:36:34"]

Это будет работать даже с несколькими MAC-адресами в одной строке.

str = "bridge=vmbr1,virtio=32:65:63:62:36:35,firewall=1,foo=32:65:63:62:36:39,bar=32:65:63:62:36:38";
str.match(/([0-9A-F]{2}:?){6}/g);

// output
// ["32:65:63:62:36:34","32:65:63:62:36:39","32:65:63:62:36:38"]
person Michael Ambrose    schedule 14.05.2016