ताज्जुब है, मुझे वास्तव में यहाँ कोई समाधान नहीं मिला जो बहुत सरल था, फिर भी हैंडलिंग http
/ https
लिंक के लिए एक अच्छा काम किया ।
ध्यान रखें, यह एक सही समाधान नहीं है, लेकिन यह नीचे के मामलों के लिए काम करता है। सारांश में, regex परीक्षण करता है कि क्या URL के साथ शुरू होता है http://
या https://
फिर कम से कम 1 वर्ण के लिए जाँच करता है, फिर एक बिंदु के लिए जाँच करता है, और फिर कम से कम 1 वर्ण के लिए जाँच करता है। कोई रिक्त स्थान की अनुमति दी।
+ (BOOL)validateLink:(NSString *)link
{
NSString *regex = @"(?i)(http|https)(:\\/\\/)([^ .]+)(\\.)([^ \n]+)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [predicate evaluateWithObject:link];
}
इन URL के विरुद्ध परीक्षण किया गया:
@"HTTP://FOO.COM",
@"HTTPS://FOO.COM",
@"http://foo.com/blah_blah",
@"http://foo.com/blah_blah/",
@"http://foo.com/blah_blah_(wikipedia)",
@"http://foo.com/blah_blah_(wikipedia)_(again)",
@"http://www.example.com/wpstyle/?p=364",
@"https://www.example.com/foo/?bar=baz&inga=42&quux",
@"http://✪df.ws/123",
@"http://userid:password@example.com:8080",
@"http://userid:password@example.com:8080/",
@"http://userid@example.com",
@"http://userid@example.com/",
@"http://userid@example.com:8080",
@"http://userid@example.com:8080/",
@"http://userid:password@example.com",
@"http://userid:password@example.com/",
@"http://142.42.1.1/",
@"http://142.42.1.1:8080/",
@"http://➡.ws/䨹",
@"http://⌘.ws",
@"http://⌘.ws/",
@"http://foo.com/blah_(wikipedia)#cite-",
@"http://foo.com/blah_(wikipedia)_blah#cite-",
@"http://foo.com/unicode_(✪)_in_parens",
@"http://foo.com/(something)?after=parens",
@"http://☺.damowmow.com/",
@"http://code.google.com/events/#&product=browser",
@"http://j.mp",
@"http://foo.bar/?q=Test%20URL-encoded%20stuff",
@"http://مثال.إختبار",
@"http://例子.测试",
@"http://उदाहरण.परीक्षा",
@"http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com",
@"http://1337.net",
@"http://a.b-c.de",
@"http://223.255.255.254"
इन URL के विरुद्ध परीक्षण किया गया:
@"",
@"foo",
@"ftp://foo.com",
@"ftp://foo.com",
@"http://..",
@"http://..",
@"http://../",
@"//",
@"///",
@"http://##/",
@"http://.www.foo.bar./",
@"rdar://1234",
@"http://foo.bar?q=Spaces should be encoded",
@"http:// shouldfail.com",
@":// should fail"
URLs का स्रोत:
https://mathiasbynens.be/demo/url-regex