2010-08-21 8 views
1
const string strRegex = @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}" 
    "(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$"; 
Regex rgxUrl = new Regex(strRegex, RegexOptions.Compiled 
    |RegexOptions.IgnoreCase); 

URL이 http://89.212.232.65 인 경우 URL을 확인하기위한이 정규식이 실패합니다. IP 주소에서도 작동 할 수 있도록 정규식을 어떻게 변경해야합니까? URL 문제의 Regex IP

+0

수행하려는 작업을 수행하는 데 더 좋은 방법이있을 수 있습니다. 당신의 목표는 무엇입니까? – msw

+0

어떤 언어입니까? (태그 추가) regexp 라이브러리/모듈을 사용하여 ip/hostnames/urls와 같은 공통적 인 (그러나 쉽게 할 수있는) 패턴을 일치시키는 것을 고려하십시오. – nicomen

답변

0
const string strRegex = 
    @"^(http|https|ftp)\://" + 
    @"(([a-zA-Z0-9-.]+\.[a-zA-Z]{2,3})|([0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d))" + 
    @"(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9-._\?\,\'/\+&%\$#\=~])*[^.\,)(\s]$"; 
Regex rgxUrl = new Regex(strRegex, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
1

+.[a-zA-Z]{2,3}에서 .이 이해가되지 않는 한, 당신은 아마 여기 \.

이 의미 [나는 모두가 하나의 연속 일정 -msw 인 strRegex 정의와 편집의 자유를했다] 첫 번째 부분에서 잘 작동합니다.

/^(https?|ftp):\/\/([-\w.]+\.[a-zA-Z]{2,3})|((\d{1,3}\.){3}\d{1,3})/ 

(PCRE)

0

아마도 당신은 어떤 종류의 검증을하고 있습니까? 호스트 이름을 추출하려고합니까? 이것을 위해 정규식이 필요하지 않습니다. Uri 또는 UriBuilder 클래스 사용