在Cocoa应用程序中验证用户输入的URL的最佳方法是什么?

时间:2008-10-10 20:36:20

标签: regex cocoa validation url

我正在尝试建立一个自制网络浏览器,以便更加熟练地掌握Cocoa。我需要一种好方法来验证用户是否输入了有效的URL。我已经尝试了一些正则表达式但是NSString有一些有趣的怪癖,并且不喜欢我曾经看过的大多数正则表达式的反引用。

2 个答案:

答案 0 :(得分:5)

您可以从+ (id)URLWithString:(NSString *)URLStringNSURL方法开始,如果字符串格式错误,则返回nil

如果您需要进一步验证,可以使用baseURLhostparameterStringpath等方法为您提供网址的特定组成部分,然后可以用你认为合适的方式进行评估。

答案 1 :(得分:4)

我发现可以输入一些似乎没问题但被NSURL创建方法拒绝的网址。所以我们有一个方法来首先转义字符串,以确保它的格式良好。以下是它的内容:

NSString *escapedURLString =
    NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL,
      (CFStringRef)URLString,
      (CFStringRef)@"%+#",  // Characters to leave unescaped
      NULL,
      kCFStringEncodingUTF8));