我有一个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
部分。
感谢任何帮助。
答案 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"]