Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 什么';在Cocoa应用程序中验证用户输入的URL的最佳方法是什么?_Regex_Cocoa_Validation_Url - Fatal编程技术网

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

Regex 什么';在Cocoa应用程序中验证用户输入的URL的最佳方法是什么?,regex,cocoa,validation,url,Regex,Cocoa,Validation,Url,我正在尝试建立一个自制的网络浏览器,以便更加精通可可。我需要一个好方法来验证用户是否输入了有效的URL。我尝试过一些正则表达式,但NSString有一些有趣的怪癖,不喜欢我见过的大多数正则表达式使用的一些反引号。可以从的方法开始,如果字符串格式不正确,它将返回nil 如果需要进一步验证,可以使用baseURL、host、parameterString、path等方法为您提供URL的特定组件,然后,您可以以您认为合适的任何方式对其进行评估。我发现,可以输入一些看似正常但被NSURL创建方法拒绝的U

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

可以从的方法开始,如果字符串格式不正确,它将返回
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"