【问题标题】:What's the best way to validate a user-entered URL in a Cocoa application?在 Cocoa 应用程序中验证用户输入的 URL 的最佳方法是什么?
【发布时间】:2008-10-10 20:36:20
【问题描述】:

我正在尝试构建一个自制的网络浏览器,以便更精通 Cocoa。我需要一种很好的方法来验证用户是否输入了有效的 URL。我尝试了一些正则表达式,但 NSString 有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。

【问题讨论】:

    标签: regex cocoa validation url


    【解决方案1】:

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

    如果您需要进一步验证,您可以使用baseURLhostparameterStringpath 等方法为您提供 URL 的特定组件,然后您可以以任何您看到的方式对其进行评估适合。

    【讨论】:

    • 对于任何对此感到困惑的人:NSURL *myURL = [NSURL URLWithString:@"test"]; if(myURL){ } 是不够的,因为“test”是一个有效的 URL。您可能需要添加使用: if (myURL && myURL.scheme && myURL.host) { }
    • if (myURL && myURL.scheme && myURL.host) { } 这不起作用。它对于像“xxxx://xxxx://www.googl.com”这样的 ULR 仍然有效
    【解决方案2】:

    我发现可以输入一些看似正常但被 NSURL 创建方法拒绝的 URL。所以我们有一种方法可以首先对字符串进行转义,以确保它的格式正确。这是它的肉:

    NSString *escapedURLString = NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)URLString, (CFStringRef)@"%+#", // 不转义的字符 空值, kCFStringEncodingUTF8));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多