Регулярное выражение для URL с портом в Objective c - PullRequest
6 голосов
/ 08 марта 2011

Вот код, который я использую, он проверяет 99% URL-адресов, которые я ему предоставляю, но завершается ошибкой, если после URL-адреса в URL-адресе есть ": порт".

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


//NSString *urlRegEx=@"(http|https)://(((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+)|(";
NSString *urlRegEx = @"^(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]$";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
return [urlTest evaluateWithObject:candidate];

}

спасибо за помощь!

1 Ответ

5 голосов
/ 08 марта 2011

Почему бы не использовать NSURL?Попробуйте создать URL с URLWithString:, и если он вернет nil, ваш URL был искажен.Если вы не получите ноль взамен, вы можете проверить хост, порт и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...