【发布时间】:2008-10-10 20:36:20
【问题描述】:
我正在尝试构建一个自制的网络浏览器,以便更精通 Cocoa。我需要一种很好的方法来验证用户是否输入了有效的 URL。我尝试了一些正则表达式,但 NSString 有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。
【问题讨论】:
标签: regex cocoa validation url
我正在尝试构建一个自制的网络浏览器,以便更精通 Cocoa。我需要一种很好的方法来验证用户是否输入了有效的 URL。我尝试了一些正则表达式,但 NSString 有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。
【问题讨论】:
标签: regex cocoa validation url
您可以从NSURL 的+ (id)URLWithString:(NSString *)URLString 方法开始,如果字符串格式错误,该方法将返回nil。
如果您需要进一步验证,您可以使用baseURL、host、parameterString、path 等方法为您提供 URL 的特定组件,然后您可以以任何您看到的方式对其进行评估适合。
【讨论】:
我发现可以输入一些看似正常但被 NSURL 创建方法拒绝的 URL。所以我们有一种方法可以首先对字符串进行转义,以确保它的格式正确。这是它的肉:
NSString *escapedURLString = NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)URLString, (CFStringRef)@"%+#", // 不转义的字符 空值, kCFStringEncodingUTF8));【讨论】: