什么是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])$