Проверка URL (Objective-C) - PullRequest
6 голосов
/ 22 ноября 2011

Я пытаюсь проверить URL с помощью этого метода:

Код:

- (BOOL) validateUrl: (NSString *) candidate {

    NSString *urlRegEx=
    @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)";

    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate];

}

Не работает. Я думаю, что проблема с регулярным выражением.

Ответы [ 4 ]

13 голосов
/ 22 ноября 2011

Вы можете использовать + (id)URLWithString:(NSString *)URLString метод NSURL, который возвращает nil, если строка искажена.

Используйте if (URL && URL.scheme && URL.host) для проверки URL.

7 голосов
/ 22 ноября 2011

Попробуйте с этим ..

- (BOOL) validateUrl: (NSString *) candidate {
    NSString *urlRegEx =
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate];
}

это может вам помочь.

0 голосов
/ 20 октября 2018

Как насчет использования следующего:

NSURL * url = [NSURL URLWithString: @ "http://www.google.com"];

BOOL isValid = [UIApplication.sharedApplication canOpenURL: url];

примечание: рекомендуется использовать регулярные выражения

0 голосов
/ 29 июня 2012
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
...