如何检查有效url?
How to check valid url?
如何检查 NSURL 是否有效?
1)如果我输入 "facebook.com" 那么它应该添加“http://www”。
2) 如果我输入"www.facebook.com",那么它应该添加"http://"
3) 如果我输入 "facebook",那么它应该搜索 google。
我怎样才能做到这一点?
我正在按照以下方式执行此操作,但它不起作用。第三种情况总是 return 正确。("http://www.facebook")
if (![url.absoluteString.lowercaseString hasPrefix:@"http://"])
{
if(![url.absoluteString.lowercaseString hasPrefix:@"www."])
{
url = [NSURL URLWithString:[@"http://www." stringByAppendingString:locationField.text]];
}
else
{
url = [NSURL URLWithString:[@"http://" stringByAppendingString:locationField.text]];
}
}
if(![self validateUrl:url.absoluteString])
{
url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/search?q=%@",[locationField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
}
- (BOOL) validateUrl:(NSString *)candidate
{
NSString *urlRegEx = @"((https|http)://)((\w|-)+)(([.]|[/])((\w|-)+))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
如果用户输入facebook.com
,则无需添加www.
。 http://
就足够了。无论如何,以下功能可以吃或不吃 www.
func checkURL(url: String ) -> Bool {
let urlRegEx = "^http(?:s)?://(?:w{3}\.)?(?!w{3}\.)(?:[\p{L}a-zA-Z0-9\-]+\.){1,}(?:[\p{L}a-zA-Z]{2,})/(?:\S*)?$"
let urlTest = NSPredicate(format: "SELF MATCHES %@", urlRegEx)
return urlTest.evaluateWithObject(url)
}
checkURL("http://www.россия.рф/") // true
checkURL("http://www.facebook.com/") // true
checkURL("http://www.some.photography/") // true
checkURL("http://facebook.com/") // true
checkURL("http://www.россия/") // false
checkURL("http://www.facebook/") // false
checkURL("http://www.some/") // false
checkURL("http://facebook/") // false
checkURL("http://россия.рф/") // true
checkURL("http://facebook.com/") // true
checkURL("http://some.photography/") // true
checkURL("http://com/") // false
在swift2,
func verifyUrl (str: String?) -> Bool {
//Check for nil
var urlString = str!
if urlString.hasPrefix("http://") || urlString.hasPrefix("https://"){
}else{
urlString = "http://" + urlString
}
let userURL:String = urlString
let regex = try? NSRegularExpression(pattern: "((https|http)://)((\w|-|m)+)(([.]|[/])((\w|-)+))+", options: .CaseInsensitive)
return regex?.firstMatchInString(userURL, options: [], range: NSMakeRange(0, userURL.characters.count)) != nil
}
如何检查 NSURL 是否有效? 1)如果我输入 "facebook.com" 那么它应该添加“http://www”。
2) 如果我输入"www.facebook.com",那么它应该添加"http://"
3) 如果我输入 "facebook",那么它应该搜索 google。
我怎样才能做到这一点?
我正在按照以下方式执行此操作,但它不起作用。第三种情况总是 return 正确。("http://www.facebook")
if (![url.absoluteString.lowercaseString hasPrefix:@"http://"])
{
if(![url.absoluteString.lowercaseString hasPrefix:@"www."])
{
url = [NSURL URLWithString:[@"http://www." stringByAppendingString:locationField.text]];
}
else
{
url = [NSURL URLWithString:[@"http://" stringByAppendingString:locationField.text]];
}
}
if(![self validateUrl:url.absoluteString])
{
url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/search?q=%@",[locationField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
}
- (BOOL) validateUrl:(NSString *)candidate
{
NSString *urlRegEx = @"((https|http)://)((\w|-)+)(([.]|[/])((\w|-)+))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
如果用户输入facebook.com
,则无需添加www.
。 http://
就足够了。无论如何,以下功能可以吃或不吃 www.
func checkURL(url: String ) -> Bool {
let urlRegEx = "^http(?:s)?://(?:w{3}\.)?(?!w{3}\.)(?:[\p{L}a-zA-Z0-9\-]+\.){1,}(?:[\p{L}a-zA-Z]{2,})/(?:\S*)?$"
let urlTest = NSPredicate(format: "SELF MATCHES %@", urlRegEx)
return urlTest.evaluateWithObject(url)
}
checkURL("http://www.россия.рф/") // true
checkURL("http://www.facebook.com/") // true
checkURL("http://www.some.photography/") // true
checkURL("http://facebook.com/") // true
checkURL("http://www.россия/") // false
checkURL("http://www.facebook/") // false
checkURL("http://www.some/") // false
checkURL("http://facebook/") // false
checkURL("http://россия.рф/") // true
checkURL("http://facebook.com/") // true
checkURL("http://some.photography/") // true
checkURL("http://com/") // false
在swift2,
func verifyUrl (str: String?) -> Bool {
//Check for nil
var urlString = str!
if urlString.hasPrefix("http://") || urlString.hasPrefix("https://"){
}else{
urlString = "http://" + urlString
}
let userURL:String = urlString
let regex = try? NSRegularExpression(pattern: "((https|http)://)((\w|-|m)+)(([.]|[/])((\w|-)+))+", options: .CaseInsensitive)
return regex?.firstMatchInString(userURL, options: [], range: NSMakeRange(0, userURL.characters.count)) != nil
}