通过RegEx查找部分MAC地址

时间:2018-03-06 20:01:52

标签: regex mac-address

对于我的应用程序,我需要一个RegEx,它可以查明一个字符串是否至少部分是一个MAC地址,但到目前为止我只找到了以下RegEx,它只能找到某个东西是完整的MAC地址

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

什么是RegEx(可能来自上述那个)返回这3个字符串的完全匹配:

  1. 93:31:13:E1:D3:1A
  2. 3E-EB-47-8
  3. 84:0C:
  4. 虽然没有为这两个字符串返回匹配项:

    1. 6B-90-8Y-31-D1-7K
    2. 37-4H-31
    3. 注意:我不会说这是THIS问题的“实际”副本

      1. 这个问题从未成功解决,尽管它已经有6岁了
      2. 该问题针对特定引擎
      3. 提供给该问题的答案均​​不适用于上述所有/任何案例

1 个答案:

答案 0 :(得分:2)

如果要将部分MAC地址与1种分隔符匹配,可以使用

^[0-9A-Fa-f]{1,2}(?:(?::[0-9A-Fa-f]{0,2}){0,5}|(?:-[0-9A-Fa-f]{0,2}){0,5})$

请参阅regex demo

要匹配字符串中混合的-:的MAC地址,您可以使用

^[0-9A-Fa-f]{1,2}(?:[:-][0-9A-Fa-f]{0,2}){0,5}$

请参阅this regex demo

正则表达式详细信息

此处的MAC地址可以包含6个:-个分隔的2-hex char部分,并将其匹配为一种类型。

  • ^ - 字符串的开头
  • [0-9A-Fa-f]{1,2} - 1或2个十六进制字符
  • (?:
    • (?::[0-9A-Fa-f]{0,2}){0,5} - 0到5次重复:后跟0到2个十六进制字符
    • | - 或
    • (?:-[0-9A-Fa-f]{0,2}){0,5} - 0到5次重复-后跟0到2个十六进制字符
  • ) - 非捕获交替组的结束
  • $ - 字符串结束。