6

我正在尝试使用此方法验证 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

4 回答 4

13

您可以使用+ (id)URLWithString:(NSString *)URLString方法 of ,如果字符串格式错误 NSURL,该方法会返回。nil

用于if (URL && URL.scheme && URL.host)检查 URL。

于 2011-11-22T09:42:32.840 回答
6

试试这个..

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

它可能会帮助你。

于 2011-11-22T09:43:51.123 回答
1

如何使用以下内容:

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

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

注意:最佳做法是使用正则表达式

于 2018-10-19T22:02:59.183 回答
0
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
于 2012-06-29T15:13:22.960 回答