我的团队构建了允许 MAC 地址作为用户输入的软件。这些地址通常是从各种平台以各种格式复制粘贴的。
维基百科将MAC 地址符号约定记录为:
用于以人性化形式打印 EUI-48 地址的标准 (IEEE 802) 格式是六组两个十六进制数字,按传输顺序(例如
01-23-45-67-89-AB
)用连字符 (-) 分隔。这种形式也常用于 EUI-64(例如01-23-45-67-89-AB-CD-EF
)。其他约定包括六组由冒号 (:) 分隔的两个十六进制数字(例如01:23:45:67:89:AB
),以及三组由点(.)分隔的四个十六进制数字(例如0123.4567.89AB
);再次按传输顺序。
虽然不那么可读,但通常会看到以原始形式输入的 MAC 地址:AAAABBBBCCCC
.
鉴于维基百科和其他地方记录的常用符号,我们使用正则表达式
^(?:[0-9A-Fa-f]{2}([-: ]?))(?:[0-9A-Fa-f]{2}\1){4}[0-9A-Fa-f]{2}$|^(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4}$
匹配以下格式:
AAAABBBBCCCC
AA:AA:BB:BB:CC:CC
AA-AA-BB-BB-CC-CC
AAAA.BBBB.CCCC
最近有人将我引向了使用格式示例介绍MAC 地址的文章,其中介绍了以下格式AAA.ABB.BBC.CCC
,我们的正则表达式不支持该格式。
经过一些研究和谷歌搜索,我无法将这种格式归因于特定的供应商或来源。在修改我们的正则表达式之前,我想了解格式来源的上下文。遗憾的是,上述文章来源不佳,出现在 Google 搜索MAC 地址格式的第一个结果中。
在我的研究过程中,我遇到了我们的正则表达式不匹配的其他几种格式。显然有多种方法可以表示 48 位 MAC 地址。
表示 48 位 MAC 地址的各种标准和行业实践方式有哪些?如果可能的话,可以在几个不同的地方用分隔符分解一个 12 个字符的字符串,我想有一个给定格式的来源。