2011-12-20 4 views
2

이 기능을 사용하여 URL 유효 여부를 확인합니다. 대부분의 경우 작동하지만, 여기에있는 URL은 유효하지 않습니다.URL 유효성 검사 기능 향상

http://www.iphonedevsdk.com/forum/iphone-sdk-development/11841-stringbytrimmingcharactersinset.html

나는 모든 URL 유형을 다룰 것입니다 내 함수의 정규 표현식을 개선하기 위해 무엇을 할 수 있는가?

- (BOOL) urlIsValiad: (NSString *) url 
{ 
    NSString *regex = 
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"; 
    NSPredicate *regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 

    if ([regextest evaluateWithObject: url] == YES) { 
     NSLog(@"URL is valid!"); 
    } else { 
     NSLog(@"URL is not valid!"); 
    } 

    return [regextest evaluateWithObject:url]; 
} 

답변

2

이 내 시도 될 것이다 :

((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?

편집 여분의 특이성에 대한 백 참조 (?<=/)에 추가

편집이 URL에서 국가 이름 추가 옵션 검색 (예 : www가 .google.com.in)

+0

: 다른 호스트 이름은 ... 따라서 나는 함께 정규식을 확장했다. 동전/. 그 해결책을 부탁드립니다. 내가 어디에서 변화시킬 수 있니?. 따라서 두 형식 모두 유효성을 검사했습니다. – MinuMaster

+0

@MinuMaster 안녕하세요, 내가 언급 한 문제를 해결하기 위해 검색 패턴을 변경했습니다. 상기 참조하십시오. –

+0

고마워, 이제는 모든 조건에서 훌륭하게 작동합니다. :) 실제로 좋은 결과를 유지합니다. – MinuMaster

1

* regex = 행을 다음과 같이 변경하십시오.

NSString * regex = "(http | ftp | https) : // [\ w-_] + (. [\ w-_] +) + ([ & :/~ + #] * [\ w - \ @?^= % &/~ + #])? "

0

글쎄, 나는 마이크로 소프트 사이트에서 뭔가를 발견했다. 지금까지 :

@"(?:[A-Za-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%\\&'*+/=?\\^_`{|}" 

@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\" 

@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[A-Za-z0-9](?:[A-Za-" 

@"z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\\[(?:(?:25[0-5" 

@"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-" 

@"9][0-9]?|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21" 

@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; 
0

올드 스레드하지만 난 내 개정 여기에 다른 사람 착륙 도움이 될 수있다 생각한다

내가 호스트 이름으로 'www'를 만 확인하고 싶지 않았다, 요즘 우리가 발생할 수 이 위의 패턴은 http://www.google.com/와 작품이지만 http://www.google 작동하지 않을 것

"((?:http|https)://)?(?:[A-Za-z0-9]{1,25}\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?" 
0
-(BOOL)validateUrl{ 
// NSString *urlRegEx = @"((?:http|https)://)?(www\\.)[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?"; 
    NSString *urlRegEx = @"((?:http|https)://)?(www\\.)[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?"; 
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    if ([urlTest evaluateWithObject: self] == YES) { 
     NSLog(@"URL is valid!"); 
    } else { 
     NSLog(@"URL is not valid!"); 
    } 
    return [urlTest evaluateWithObject:self]; 
}