Regex 什么';在Cocoa应用程序中验证用户输入的URL的最佳方法是什么?
我正在尝试建立一个自制的网络浏览器,以便更加精通可可。我需要一个好方法来验证用户是否输入了有效的URL。我尝试过一些正则表达式,但NSString有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。可以从的方法开始,如果字符串格式不正确,它将返回Regex 什么';在Cocoa应用程序中验证用户输入的URL的最佳方法是什么?,regex,cocoa,validation,url,Regex,Cocoa,Validation,Url,我正在尝试建立一个自制的网络浏览器,以便更加精通可可。我需要一个好方法来验证用户是否输入了有效的URL。我尝试过一些正则表达式,但NSString有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。可以从的方法开始,如果字符串格式不正确,它将返回nil 如果需要进一步验证,可以使用baseURL、host、parameterString、path等方法为您提供URL的特定组件,然后,您可以以您认为合适的任何方式对其进行评估。我发现,可以输入一些看似正常但被NSURL创建方法拒绝的U
nil
如果需要进一步验证,可以使用
baseURL
、host
、parameterString
、path
等方法为您提供URL的特定组件,然后,您可以以您认为合适的任何方式对其进行评估。我发现,可以输入一些看似正常但被NSURL创建方法拒绝的URL。因此,我们有一个方法首先对字符串进行转义,以确保其格式良好。以下是它的主要内容:
NSString *escapedURLString =
NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)URLString,
(CFStringRef)@"%+#", // Characters to leave unescaped
NULL,
kCFStringEncodingUTF8));
NSString*escapedURLString=
NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes)(空,
(CFStringRef)URLString,
(CFStringRef)@“%+#”,//要保留未设置范围的字符
无效的
kCFStringEncodingUTF8);
对于对此感到困惑的人:NSURL*myURL=[NSURL-URLWithString:@“test”];if(myURL){}是不够的,因为“test”是一个有效的URL。您可能需要添加用法:if(myURL&&myURL.scheme&&myURL.host){}if(myURL&&myURL.scheme&&myURL.host){}这将不起作用。它对ULR仍然有效,如“xxxx://xxxx://www.googl.com"