对于我的应用程序,我需要一个RegEx,它可以找出一个字符串是否至少部分是一个MAC地址,但到目前为止我只找到了以下RegEx,它只发现某些东西是一个完整的MAC地址
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
什么是RegEx(可能来自上述一个)返回这3个字符串的完全匹配:
93:31:13:E1:D3:1A
3E-EB-47-8
84:0C:
虽然没有为这两个字符串返回匹配项:
6B-90-8Y-31-D1-7K
37-4H-31
注意:我不会说这是THIS问题的“实际”副本
如果要将部分MAC地址与仅1种分隔符匹配,则可以使用
^[0-9A-Fa-f]{1,2}(?:(?::[0-9A-Fa-f]{0,2}){0,5}|(?:-[0-9A-Fa-f]{0,2}){0,5})$
要匹配MAC地址与字符串中混合的-
和:
,您可以使用
^[0-9A-Fa-f]{1,2}(?:[:-][0-9A-Fa-f]{0,2}){0,5}$
正则表达式细节
这里的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个十六进制字符)
- 非捕获交替组的结束$
- 字符串的结尾。