网址验证(Objective-C)

时间:2011-11-22 09:32:22

标签: objective-c regex nsregularexpression

我正在尝试使用此方法验证网址:

代码:

- (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 个答案:

答案 0 :(得分:13)

您可以使用NSURL nil方法,如果字符串格式错误,则返回if (URL && URL.scheme && URL.host)

使用{{1}}检查网址。

答案 1 :(得分:7)

试试这个..

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

它可能会帮助你。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如何使用以下内容:

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

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

注意:最佳实践是使用正则表达式