在Swift 3中验证URL

Vin*_*ale 0 regex swift

我试图验证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
Run Code Online (Sandbox Code Playgroud)

Vin*_*ale 6

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)
}
Run Code Online (Sandbox Code Playgroud)

这很有效.

  • 这仍然不接受子域。例如,google.basecamp.com 将返回 false。有什么帮助吗? (2认同)