在javascript中从字符串中提取MAC地址

时间:2016-05-14 01:19:57

标签: regex node.js mac-address

我有一个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";

......还有许多其他变种。因此,使用split或substring之类的东西是行不通的。我假设我可能需要使用一些正则表达式从字符串中提取32:65:63:62:36:35部分。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

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

正则表达式匹配标准组mac公开列表 IEEE Std 802.1D and IEEE Std 802.1Q保留地址。

  

用于打印MAC-48地址的标准(IEEE 802)格式   人性化的形式是六组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])




答案 1 :(得分:1)

试试这个:

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"]