2016-10-12 63 views
-1

我想验证Swift 3中的URL,但我似乎无法找到适合我需求的正则表达式。正则表达式,我需要后接受以下组合:在Swift 3中验证URL

http://google.com 
http://google.com/foo/bar:30/35 
https://google.com 
https://google.com/foo/bar:30/35 
www.google.com 
google.com 
+4

当我谷歌'在swift 3.0验证网址'我似乎得到了很多结果。显然,没有一个是Swift 3特有的,但它们带有你需要的正则表达式,应该很容易移植。例如。 http://stackoverflow.com/questions/29106005/url-validation-in-swift –

+0

我不明白为什么问题已经downvotes –

+1

这很容易谷歌能够应该首先谷歌搜索的问题。那么当你遇到一个特定的问题,或者所有可用的解决方案都不起作用时,*那么可能值得问一个问题(提到你已经尝试了很多。) –

回答

4
func validateUrl (urlString: NSString) -> Bool { 
    let urlRegEx = "((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?" 
    return NSPredicate(format: "SELF MATCHES %@", urlRegEx).evaluateWithObject(urlString) 
} 

这个工作。

+1

这仍然不接受子域名。例如,google.basecamp.com会返回false。任何帮助? –