通过RegEx查找部分MAC地址

问题描述 投票:1回答:1

对于我的应用程序,我需要一个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:

虽然没有为这两个字符串返回匹配项:

  1. 6B-90-8Y-31-D1-7K
  2. 37-4H-31

注意:我不会说这是THIS问题的“实际”副本

  1. 尽管这个问题已经大约6岁,但这个问题从未得到成功解决
  2. 该问题针对特定的引擎
  3. 提供给该问题的答案都不适用于上述所有/任何案例
regex mac-address
1个回答
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个十六进制字符
  • ) - 非捕获交替组的结束
  • $ - 字符串的结尾。
© www.soinside.com 2019 - 2024. All rights reserved.