网址验证(Objective-C)

sal*_*hni 6 regex objective-c nsregularexpression

我试图用这种方法验证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];

}
Run Code Online (Sandbox Code Playgroud)

它不起作用.我认为问题在于正则表达式.

Par*_*fna 13

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

使用if (URL && URL.scheme && URL.host)检查URL.

  • RFC 2396使用这个^(([^:/?#] +):)?(//([^ /?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?正则表达式.有关更多信息,请参阅http://www.ietf.org/rfc/rfc2396.txt (3认同)
  • 根据RFC 2396,这是有效的URl.来自apple documentation用于初始化NSURL对象的字符串.必须是符合RFC 2396的URL.此方法根据RFC 1738和1808解析URLString.使用"if(URL && URL.scheme && URL.host)"来检查URL. (2认同)

iCo*_*777 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];
}
Run Code Online (Sandbox Code Playgroud)

它可能会帮助你.