什么是MAC地址的正则expression式?
以这种格式:
3D:F2:C9:A6:B3:4F
要么:
3D-F2-C9-A6-B3-4F
以人性化的forms打印MAC-48地址的标准(IEEE 802)格式是六个组,由两个hex数字组成,用连字符或冒号分隔。
所以:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
眼睛有点难受,但是这个:
/^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
将为您的MAC表示法强制执行所有冒号或全部破折号。
(比较简单的正则expression式方法可能允许A1:B2-C3:D4-E5:F6
,例如上面的拒绝。)
分隔符:“ : ”,“ – ”,“ 。 ”
双或单:00 = 0,0f = f
/^([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})$/i
要么
/^([0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2})$/
exm: 00:27:0e:2a:b9:aa, 00-27-0E-2A-B9-AA, 0.27.e.2a.b9.aa ...
这个正则expression式匹配几乎所有的mac格式,包括Cisco格式,如0102-0304-abcd
^([[:xdigit:]]{2}[:.-]?){5}[[:xdigit:]]{2}$
它匹配的示例string:
01:02:03:04:ab:cd 01-02-03-04-ab-cd 01.02.03.04.ab.cd 0102-0304-abcd 01020304abcd
混合格式也将匹配!
这个链接可能会帮助你。 你可以使用: (([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
请注意,Unicode属性\p{xdigit}
包含FULLWIDTH版本。 您可能更喜欢\p{ASCII_Hex_Digit}
。
问题的答案可能是最好的答案 – 只要你有一个安装了一定的古老的CPAN模块 – input:
% perl -MRegexp::Common -lE 'say $RE{net}{MAC}'
我把它输出的特殊模式显示为幸运模式13; 还有很多其他的。
这个程序:
#!/usr/bin/env perl use 5.010; use strict; use warnings qw<FATAL all>; my $mac_rx = qr{ ^ (?&MAC_addr) $ (?(DEFINE) (?<MAC_addr> (?&pair) (?<it> (?&either) ) (?: (?&pair) \k<it> ) {4} (?&pair) ) (?<pair> [0-9a-f] {2} ) (?<either> [:\-] ) ) }xi; while (<DATA>) { chomp; printf("%-25s %s\n", $_ => /$mac_rx/ ? "ok" : "not ok"); } __END__ 3D:F2:C9:A6:B3:4F 3D:F2:AC9:A6:B3:4F 3D:F2:C9:A6:B3:4F:00 :F2:C9:A6:B3:4F F2:C9:A6:B3:4F 3d:f2:c9:a6:b3:4f 3D-F2-C9-A6-B3-4F 3D-F2:C9-A6:B3-4F
生成这个输出:
3D:F2:C9:A6:B3:4F ok 3D:F2:AC9:A6:B3:4F not ok 3D:F2:C9:A6:B3:4F:00 not ok :F2:C9:A6:B3:4F not ok F2:C9:A6:B3:4F not ok 3d:f2:c9:a6:b3:4f ok 3D-F2-C9-A6-B3-4F ok 3D-F2:C9-A6:B3-4F not ok
这似乎是你要找的东西。
也看到这个问题 。
正则expression式如下:
^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$ ^[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}$
/(?:[A-Fa-f0-9]{2}[:-]){5}(?:[A-Fa-f0-9]{2})/
PHP的人:
print_r(preg_match('/^(?:[0-9A-F]{2}[:]?){5}(?:[0-9A-F]{2}?)$/i', '00:25:90:8C:B8:59'));
需要说明: http : //regex101.com/r/wB0eT7
python版本可能是:
re.compile(r'\A(?:[\da-f]{2}[:-]){5}[\da-f]{2}\Z',re.I)
您可以通过传递mac地址进行validation来使用以下过程,
private static final String MAC_PATTERN = "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$"; private boolean validateMAC(final String mac){ Pattern pattern = Pattern.compile(MAC_PATTERN); Matcher matcher = pattern.matcher(mac); return matcher.matches(); }
/^(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2}|([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}|([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})?$/
上面的正则expression式validation了以下所有的mac地址types:
01-23-45-67-89-ab 01:23:45:67:89:ab 0123.4567.89ab
如果你需要数字之间的空格,就像这个变体一样
3D : F2 : C9 : A6 : B3 : 4F
正则expression式更改为
"^([0-9A-Fa-f]{2}\\s[:-]\\s){5}([0-9A-Fa-f]{2})$"
匹配48位EUI-48和64位EUI-64 MAC地址:
/\A\h{2}([:\-]?\h{2}){5}\z|\A\h{2}([:\-]?\h{2}){7}\z/
其中\ h是[0-9a-fA-F]中的一个字符
要么:
/\A[0-9a-fA-F]{2}([:\-]?[0-9a-fA-F]{2}){5}\z|\A[0-9a-fA-F]{2}([:\-]?[0-9a-fA-F]{2}){7}\z/
这允许使用“ – ”或“:”或不使用分隔符
为PHP开发人员
filter_var($value, FILTER_VALIDATE_MAC)
最好的答案是mac地址validation正则expression式
^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$