用高级URL字符串验证URL



正在开发一个应用程序,在接受提交之前验证URL。

下面的代码接受简单的url,如www.google.com,但不值得使用更复杂的url,如www.google.com/?test-test

- (BOOL) validateUrl: (NSString *) candidate {
    NSString *urlRegEx =
    @"((\w)*|([0-9]*)|([-|_])*)+([\.|/]((\w)*|([0-9]*)|([-|_])*))+";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
    return [urlTest evaluateWithObject:candidate];
}

引自Apple文档:

返回值用URLString初始化的NSURL对象。如果URL字符串格式错误或为nil,返回nil。

您可以通过实际尝试创建NSURL对象来测试URL的有效性。

NSString* some_url1 = ...// your input
NSURL* u1 = [NSURL URLWithString:some_url1];
BOOL ok = u1 != nil;

最新更新