在我的Swift iOS项目中,我想在请求服务器之前检查是否为有效URL。我之前在Objective C代码中做了检查许多元素,例如www,http,https 、:等的存在,以验证是否正确的url。Swift代码中是否有类似内容?
我期望像这样的Obj C方法。
- (BOOL) validateUrl: (NSString *) candidate {
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
Run Code Online (Sandbox Code Playgroud)
请提出建议。
斯威夫特4.x
这涵盖了所有类型的验证(如子域),无论是否带有HTTP / HTTPS
func isValidUrl(url: String) -> Bool {
let urlRegEx = "^(https?://)?(www\\.)?([-a-z0-9]{1,63}\\.)*?[a-z0-9][-a-z0-9]{0,61}[a-z0-9]\\.[a-z]{2,6}(/[-\\w@\\+\\.~#\\?&/=%]*)?$"
let urlTest = NSPredicate(format:"SELF MATCHES %@", urlRegEx)
let result = urlTest.evaluate(with: url)
return result
}
Run Code Online (Sandbox Code Playgroud)
希望这对您有用。
您可以使用stringByAddingPercentEscapesUsingEncoding方法来替换您的链接可能具有的任何特殊字符,然后您可以使用NSURL(string:)检查您的链接是否是有效的网址,如下所示:
let link = "http://www.yourUrl.com".stringByRemovingPercentEncoding!.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
if let checkedUrl = NSURL(string: link) {
// you can use checkedUrl here
}
Run Code Online (Sandbox Code Playgroud)
注意:NSURL(string:) 仅适用于网络链接。如果您想为本地资源文件创建 NSURL,则需要使用 NSURL(fileURLWithPath:)
| 归档时间: |
|
| 查看次数: |
11322 次 |
| 最近记录: |