采用以下格式:
3D:F2:C9:A6:B3:4F
Run Code Online (Sandbox Code Playgroud)
要么:
3D-F2-C9-A6-B3-4F
Run Code Online (Sandbox Code Playgroud)
net*_*der 252
用于以人类友好形式打印MAC-48地址的标准(IEEE 802)格式是六组,每个十六进制数字,用连字符
-或冒号分隔:.
所以:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Run Code Online (Sandbox Code Playgroud)
pil*_*row 21
眼睛有点硬,但是这个:
/^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Run Code Online (Sandbox Code Playgroud)
将强制执行MAC表示法的所有冒号或所有破折号.
(A1:B2-C3:D4-E5:F6例如,更简单的正则表达式方法可能允许上述拒绝.)
小智 7
分隔符:" : "," - "," . "
双或单:00 = 0,0f = f
/^([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})$/i
Run Code Online (Sandbox Code Playgroud)
要么
/^([0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2})$/
Run Code Online (Sandbox Code Playgroud)
exm: 00:27:0e:2a:b9:aa, 00-27-0E-2A-B9-AA, 0.27.e.2a.b9.aa ...
Run Code Online (Sandbox Code Playgroud)
这个正则表达式几乎匹配每种mac格式,包括思科格式 0102-0304-abcd
^([[:xdigit:]]{2}[:.-]?){5}[[:xdigit:]]{2}$
Run Code Online (Sandbox Code Playgroud)
它匹配的示例字符串:
01:02:03:04:ab:cd
01-02-03-04-ab-cd
01.02.03.04.ab.cd
0102-0304-abcd
01020304abcd
Run Code Online (Sandbox Code Playgroud)
混合格式也将匹配!
另请参阅这个问题。
正则表达式如下:
^[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}$
Run Code Online (Sandbox Code Playgroud)
请注意,Unicode 属性\p{xdigit}包括 FULLWIDTH 版本。你可能更喜欢\p{ASCII_Hex_Digit}。
如果您安装了某个古老的 CPAN 模块,那么问题的答案可能是最好的答案——输入:
% perl -MRegexp::Common -lE 'say $RE{net}{MAC}'
Run Code Online (Sandbox Code Playgroud)
我将它在此处输出的特定模式显示为幸运模式编号 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
Run Code Online (Sandbox Code Playgroud)
生成此输出:
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
Run Code Online (Sandbox Code Playgroud)
这似乎是你正在寻找的那种东西。