이 형식에서 :
3D:F2:C9:A6:B3:4F
또는:
3D-F2-C9-A6-B3-4F
답변
사람에게 친숙한 형식으로 MAC-48 주소를 인쇄하기위한 표준 (IEEE 802) 형식은 하이픈
-
또는 콜론으로 구분 된 두 개의 16 진수 숫자로 구성된 6 개 그룹입니다:
.
그래서:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
답변
눈에 약간 딱딱하지만 이것은 :
/^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
MAC 표기법에 모든 콜론 또는 모든 대시를 적용합니다.
( A1:B2-C3:D4-E5:F6
예를 들어, 더 간단한 정규식 접근 방식은을 허용 할 수 있습니다 .
답변
이 정규식은 다음과 같은 Cisco 형식을 포함하여 거의 모든 Mac 형식과 일치합니다. 0102-0304-abcd
^([[:xdigit:]]{2}[:.-]?){5}[[:xdigit:]]{2}$
일치하는 예제 문자열 :
01:02:03:04:ab:cd
01-02-03-04-ab-cd
01.02.03.04.ab.cd
0102-0304-abcd
01020304abcd
혼합 형식도 일치합니다!
답변
구분자 : ” : “, ” – “, ” . “
이중 또는 단일 : 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 ...
답변
유니 코드 속성 \p{xdigit}
에는 FULLWIDTH 버전이 포함되어 있습니다. \p{ASCII_Hex_Digit}
대신 선호 할 수 있습니다 .
질문에 대한 답변은 다음과 같이 입력하여 가장 좋은 답변이 될 수 있습니다. 특정 CPAN 모듈이 설치되어있는 경우 :
% 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
당신이 찾고있는 것 같은데.