2013-07-31 3 views
4

"127.65.231"과 같은 IP 서브넷과 일치하지만 "127.65.231.111"과 같은 서브넷의 IP 주소와 일치하지 않는 C# 정규식이 필요합니다. 이 정규식을 IP 주소로 찾았습니다 :IP 서브넷과 일치하는 정규식

@ "\ b \ d {1,3}. \ d {1,3}. \ d {1,3}. \ d {1,3 } \ 나. : \ B 형 \ d를 {1,3} \ D {1 "

난 그냥 같이, 마지막 옥텟을 확인 부분을 삭제할 수 있습니다 생각

@" , 3}. \ d {1,3} \ b "

그러나 이는 IP 주소와 서브넷 모두와 일치합니다. 아무도 이것으로 도울 수 있습니까?

+2

IP 주소는'400' 무효 진수를 일치합니다 0에서 255 귀하의 정규식에 이르기까지 옥텟에 있습니다. 당신이 그것을 더 정확하게 원한다면, 정규식은 더 복잡 할 것이다. –

+0

그래, @ BrianStephens로 정규 표현식이 999와 일치하지만 유효한 IP –

+0

[서브넷 마스킹을위한 정규 표현식?] (http://stackoverflow.com/questions/5360768/regular-expression-for -subnet-masking) – jason

답변

0
@"^\d{1,3}\.\d{1,3}\.\d{1,3}$" 

사용 Line Anchors. 추가 ^는 입력의 시작과 끝을 확인합니다.

127.65.231을 일치하지만 127.65.231.111

+1

유효하지 않은 999.999.999와 일치합니다. –

+0

@ Eric Lippert, 이제 저의 테스트 결과를 보았습니다.하지만 255를 넘지 않는 올바른 IP 옥텟 만 일치 시키려면 어떻게해야합니까? –

+0

이들 중 256 개만 있습니다. 그냥 그들을 나열하십시오. :) –

1

미리보기를 사용해보십시오.

@"\b\d{1,3}\.\d{1,3}\.\d{1,3}(?=\.\d{1,3})\b" 

이는 .111 같은 문자열로 한이 뒤를 것 같은 127.65.231 같은 임의의 문자열과 일치합니다 : 또한, . 문자 — 그렇지 않으면 어떤 문자를 을 일치합니다 탈출하시기 바랍니다. 마지막에 당신의 정규식의 시작, 그리고 $에서