Проверка URL (Objective-C)

Я пытаюсь проверить 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 ответа

Решение

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

использование if (URL && URL.scheme && URL.host) для проверки URL.

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

- (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];
}

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

NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";

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

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

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

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

Другие вопросы по тегам