Проверка 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];