从JavaScript中的string中提取MAC地址

我有一个node.js应用程序,需要从string中提取MAC地址。

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

问题在于string是dynamic的 – 它并不总是以这种格式。 它也可能显示为…

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

…之间的许多其他变化。 出于这个原因,使用像split或者substring这样的东西是行不通的。 我想我可能需要使用一些正则expression式来提取string中的32:65:63:62:36:35部分。

任何帮助表示赞赏。

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

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

用于以人性化的forms打印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]) 

尝试这个:

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

这甚至可以在单个string中使用多个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"]