Як перевірити URL-адресу на iPhone


90

У програмі для iPhone, яку я розробляю, є параметр, за допомогою якого ви можете ввести URL-адресу, оскільки через форму та функції ця URL-адреса повинна бути перевірена як в режимі онлайн, так і в режимі офлайн.

Дотепер я не міг знайти жодного методу для перевірки URL-адреси, тому питання в тому;

Як перевірити введення URL-адреси на iPhone (Objective-C) в Інтернеті, а також в режимі офлайн?


Прочитайте коментарі до його відповіді, перевірка не працює належним чином.
Thizzer

Відповіді:


98

Завдяки цій публікації ви можете уникнути використання RegexKit. Ось моє рішення (працює для розробки iphone з iOS> 3.0):

- (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];
}

Якщо ви хочете перевірити в Swift моє рішення, подане нижче:

 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
    }

7
Це працює лише для URL-адрес типу " webr.ly ", не працює для URL-адрес з параметрами, такими як youtube.com/watch?v=mqgExtdNMBk
Чт uSeFuL

5
((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"Це повинно зробити http: // або https: // додатковим.
Yeung

не працює для google.com, www.google.com, а також для //www.google.com
Revinder

наступні URL-адреси не працюють у моєму випадку. money.cnn.com/2015/10/19/technology/apple-app-store/…
DJtiwari,

@DJtiwari +1 так, це не працює. Ви знайшли якесь виправлення для цього?
Hamza MHIRA

239

Чому б замість цього просто не покладатися Foundation.framework?

Це робить роботу і не вимагає RegexKit:

NSURL *candidateURL = [NSURL URLWithString:candidate];
// WARNING > "test" is an URL according to RFCs, being just a path
// so you still should check scheme and all other NSURL attributes you need
if (candidateURL && candidateURL.scheme && candidateURL.host) {
  // candidate is a well-formed url with:
  //  - a scheme (like http://)
  //  - a host (like stackoverflow.com)
}

Відповідно до документації Apple:

URLWithString: Створює та повертає об'єкт NSURL, ініціалізований наданим рядком.

+ (id)URLWithString:(NSString *)URLString

Параметри

URLString: Рядок, за допомогою якого можна ініціалізувати об’єкт NSURL. Повинен відповідати RFC 2396. Цей метод аналізує URLString відповідно до RFC 1738 та 1808.

Повернене значення

Об'єкт NSURL, ініціалізований за допомогою URLString. Якщо рядок був неправильно сформований, повертає нуль.


1
Я погоджуюсь з деякими іншими тут. Це набагато краще рішення, яке возиться з регулярними виразами. Це має бути правильно перевірена відповідь.
Дієго Баррос

1
@MrThys - Будь-який шанс, що ви могли б навести приклади, яких неправильно сформованих URL-адрес це не ловить? Було б чудово знати .. поки що здається чудовим рішенням.
Дон Вон,

7
@DonamiteIsTnt URL http://www.aol.comhttp://www.nytimes.comпроходить цей тест.
Аарон Брагер

1
Код не перевірятиме деформацію URL-адреси. Наприклад: <code> afasd </ code >, URL-адреса все одно пройде тест
denil

39
Документи помиляються. Напишіть кілька тестів - NSURLне повертає нуль, коли я передаю рядок @ "# @ # @ $ ##% $ # $ #", або @ "tp: / fdfdfsfdsf". Отже, цей метод буде марним для перевірки дійсних URL-адрес HTTP тощо.
Тоні Арнольд,

32

Замість того, щоб писати власні регулярні вирази, покладайтесь на Apple. Я використовую категорію, NSStringяка використовує NSDataDetectorдля перевірки наявності посилання в рядку. Якщо діапазон посилання, знайдений, NSDataDetectorдорівнює довжині всього рядка, то це дійсна URL-адреса.

- (BOOL)isValidURL {
    NSUInteger length = [self length];
    // Empty strings should return NO
    if (length > 0) {
        NSError *error = nil;
        NSDataDetector *dataDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
        if (dataDetector && !error) {
            NSRange range = NSMakeRange(0, length);
            NSRange notFoundRange = (NSRange){NSNotFound, 0};
            NSRange linkRange = [dataDetector rangeOfFirstMatchInString:self options:0 range:range];
            if (!NSEqualRanges(notFoundRange, linkRange) && NSEqualRanges(range, linkRange)) {
                return YES;
            }
        }
        else {
            NSLog(@"Could not create link data detector: %@ %@", [error localizedDescription], [error userInfo]);
        }
    }
    return NO;
}

Надзвичайно кмітливий. Справжнє машинобудування. {Ви знаєте, у мене була дивна проблема, коли, якщо я надішлю йому рядок буквально "<null>", він збій! Ніколи не міг цього зрозуміти.}
Fattie,

Ах - це було "<нуль>" у сина, який яблуко корисно постачає як NSNull! : O
Fattie

Я створив суть, де почав додавати тестові кейси для цього фрагмента. Заповніть безкоштовно, щоб додати більше. gist.github.com/b35097bad451c59e23b1.git
Євген Дубінін

26

Моє рішення із Swift :

func validateUrl (stringURL : NSString) -> Bool {

    var urlRegEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
    let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[urlRegEx])
    var urlTest = NSPredicate.predicateWithSubstitutionVariables(predicate)

    return predicate.evaluateWithObject(stringURL)
}

Для тесту:

var boolean1 = validateUrl("http.s://www.gmail.com")
var boolean2 = validateUrl("https:.//gmailcom")
var boolean3 = validateUrl("https://gmail.me.")
var boolean4 = validateUrl("https://www.gmail.me.com.com.com.com")
var boolean6 = validateUrl("http:/./ww-w.wowone.com")
var boolean7 = validateUrl("http://.www.wowone")
var boolean8 = validateUrl("http://www.wow-one.com")
var boolean9 = validateUrl("http://www.wow_one.com")
var boolean10 = validateUrl("http://.")
var boolean11 = validateUrl("http://")
var boolean12 = validateUrl("http://k")

Результати:

false
false
false
true
false
false
true
true
false
false
false

10

використовуй це-

NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&amp;=]*)?";

1
я скопіював його просто для валідатора регулярних виразів asp.net;)
Vaibhav Saran

ідеально, єдина проблема полягає в тому, що вона не визнаєwww.google.com/+gplusname
Мухаммад

5

Я вирішив проблему за допомогою RegexKit і створив швидкий регулярний вираз для перевірки URL-адреси;

NSString *regexString = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSString *subjectString = brandLink.text;
NSString *matchedString = [subjectString stringByMatching:regexString];

Потім я перевіряю, чи дорівнює matchedString темі subjectString, і якщо це так, URL-адреса дійсна :)

Виправте мене, якщо мій регулярний вираз помилковий;)


Можливо, я помиляюся, але я вважаю, що регулярний вираз не перевіряє URL-адреси за допомогою рядків запитів або іменованих прив'язок.
hpique

Ви можете зробити префіксну частину необов’язковою, замінивши (http | https): // на ((http | https): //) *, але це дозволить дуже різноманітні URL-адреси
Thizzer

4

Як не дивно, але я насправді не знайшов тут дуже простого рішення, але все ж добре працював над обробкою http/ httpsпосиланнями.

Майте на увазі, ЦЕ НЕ ідеальне рішення, але воно працювало для наведених нижче випадків. Підсумовуючи, регулярний вираз перевіряє, чи починається 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"

Джерело URL-адрес: https://mathiasbynens.be/demo/url-regex


3

Ви можете використовувати це, якщо не хочете httpабо httpsабоwww

NSString *urlRegEx = @"^(http(s)?://)?((www)?\.)?[\w]+\.[\w]+";

приклад

- (void) testUrl:(NSString *)urlString{
    NSLog(@"%@: %@", ([self isValidUrl:urlString] ? @"VALID" : @"INVALID"), urlString);
}

- (void)doTestUrls{
    [self testUrl:@"google"];
    [self testUrl:@"google.de"];
    [self testUrl:@"www.google.de"];
    [self testUrl:@"http://www.google.de"];
    [self testUrl:@"http://google.de"];
}

Вихід:

INVALID: google
VALID: google.de
VALID: www.google.de
VALID: http://www.google.de
VALID: http://google.de

Це здається дуже цікавим. Це 100% кульовий доказ?
Supertecnoboff

3

Рішення Лефакіра має одне питання. Його регулярний вираз не може збігатися з " http://instagram.com/p/4Mz3dTJ-ra/ ". Компонент url має комбінований числовий та буквальний характер. Його регулярні вирази не отримують таких URL-адрес.

Ось моє вдосконалення.

"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*)+)+(/)?(\\?.*)?"

2

Я знайшов найпростіший спосіб зробити це так:

- (BOOL)validateUrl: (NSURL *)candidate
{
    NSURLRequest *req = [NSURLRequest requestWithURL:candidate];
    return [NSURLConnection canHandleRequest:req];
}

Я використовую його вже деякий час, і, здається, він працює нормально. Здається, це також добре грає з новими TLD ( namecheap.com/domains/new-tlds/explore.aspx ).
julianwyz

Це безглуздо. Якщо ваша URL-адреса є недійсним рядком, вона буде аварійно працювати під час створення NSURL, тому її можна буде перевірити замість цього. І навіть при цьому він використовує старий API.
Legoless

@Legoless міг просто спробувати ... зловити?
COBB

2

Нижче наведений код дозволить знайти дійсні URL-адреси

      NSPredicate *websitePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^(((((h|H)(t|T){2}(p|P)s?)|((f|F)(t|T)(p|P)))://(w{3}.)?)|(w{3}.))[A-Za-z0-9]+(.[A-Za-z0-9-:;\?#_]+)+"];
     if ([websitePredicate evaluateWithObject:##MY_STRING##])
     {
       printf"Valid"
     }

для таких URL-адрес


1

Затверджена відповідь неправильна. У мене є URL-адреса із знаком "-", і перевірка не вдається.


1

Підготував відповідь Вайбхава на підтримку посилань G +:

NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-\\+ ./?%&amp;=]*)?";


1

Деякі URL-адреси без / у кінці не виявляються правильними у наведених вище рішеннях. Тож це може бути корисно.

  extension String {
    func isValidURL() -> Bool{
        let length:Int = self.characters.count
        var err:NSError?
        var dataDetector:NSDataDetector? = NSDataDetector()
        do{
            dataDetector = try NSDataDetector(types: NSTextCheckingType.Link.rawValue)
        }catch{
            err = error as NSError
        }
        if dataDetector != nil{
            let range = NSMakeRange(0, length)
            let notFoundRange = NSRange(location: NSNotFound, length: 0)
            let linkRange = dataDetector?.rangeOfFirstMatchInString(self, options: NSMatchingOptions.init(rawValue: 0), range: range)
            if !NSEqualRanges(notFoundRange, linkRange!) && NSEqualRanges(range, linkRange!){
                return true
            }
        }else{
            print("Could not create link data detector: \(err?.localizedDescription): \(err?.userInfo)")
        }

        return false
    }
}

1

Перевірка URL-адреси в Swift

Деталі

Xcode 8.2.1, Swift 3

Код

enum URLSchemes: Рядок

import Foundation

enum URLSchemes: String {
    case http = "http://", https = "https://", ftp = "ftp://", unknown = "unknown://"

    static func detectScheme(urlString: String) -> URLSchemes {

        if URLSchemes.isSchemeCorrect(urlString: urlString, scheme: .http) {
            return .http
        }
        if URLSchemes.isSchemeCorrect(urlString: urlString, scheme: .https) {
            return .https
        }
        if URLSchemes.isSchemeCorrect(urlString: urlString, scheme: .ftp) {
            return .ftp
        }
        return .unknown
    }

    static func getAllSchemes(separetedBy separator: String) -> String {
        return "\(URLSchemes.http.rawValue)\(separator)\(URLSchemes.https.rawValue)\(separator)\(URLSchemes.ftp.rawValue)"
    }

    private static func isSchemeCorrect(urlString: String, scheme: URLSchemes) -> Bool {
        if urlString.replacingOccurrences(of: scheme.rawValue, with: "") == urlString {
            return false
        }
        return true
    }
}

розширення Рядок

import Foundation

extension String {

    var isUrl: Bool {

        // for http://regexr.com checking
        // (?:(?:https?|ftp):\/\/)(?:xn--)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[#-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?

        let schemes = URLSchemes.getAllSchemes(separetedBy: "|").replacingOccurrences(of: "://", with: "")
        let regex = "(?:(?:\(schemes)):\\/\\/)(?:xn--)?(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[#-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?"


        let regularExpression = try! NSRegularExpression(pattern: regex, options: [])
        let range = NSRange(location: 0, length: self.characters.count)
        let matches = regularExpression.matches(in: self, options: [], range: range)
        for match in matches {
            if range.location == match.range.location && range.length == match.range.length {
                return true
            }
        }
        return false
    }

    var toURL: URL? {

        let urlChecker: (String)->(URL?) = { url_string in
            if url_string.isUrl, let url = URL(string: url_string) {
                return url
            }
            return nil
        }

        if !contains(".") {
            return nil
        }

        if let url = urlChecker(self) {
            return url
        }

        let scheme = URLSchemes.detectScheme(urlString: self)
        if scheme == .unknown {
            let newEncodedString = URLSchemes.http.rawValue + self
            if let url = urlChecker(newEncodedString) {
                return url
            }
        }

        return nil
    }
}

Використання

 func tests() {

    chekUrl(urlString:"http://example.com")
    chekUrl(urlString:"https://example.com")
    chekUrl(urlString:"http://example.com/dir/file.php?var=moo")
    chekUrl(urlString:"http://xn--h1aehhjhg.xn--d1acj3b")
    chekUrl(urlString:"http://www.example.com/wpstyle/?p=364")
    chekUrl(urlString:"http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com")
    chekUrl(urlString:"http://example.com")
    chekUrl(urlString:"http://xn--d1acpjx3f.xn--p1ai")
    chekUrl(urlString:"http://xn--74h.damowmow.com/")
    chekUrl(urlString:"ftp://example.com:129/myfiles")
    chekUrl(urlString:"ftp://user:pass@site.com:21/file/dir")
    chekUrl(urlString:"ftp://ftp.example.com:2828/asdah%20asdah.gif")
    chekUrl(urlString:"http://142.42.1.1:8080/")
    chekUrl(urlString:"http://142.42.1.1/")
    chekUrl(urlString:"http://userid:password@example.com:8080")
    chekUrl(urlString:"http://userid@example.com")
    chekUrl(urlString:"http://userid@example.com:8080")
    chekUrl(urlString:"http://foo.com/blah_(wikipedia)#cite-1")
    chekUrl(urlString:"http://foo.com/(something)?after=parens")

    print("\n----------------------------------------------\n")

    chekUrl(urlString:".")
    chekUrl(urlString:" ")
    chekUrl(urlString:"")
    chekUrl(urlString:"-/:;()₽&@.,?!'{}[];'<>+_)(*#^%$")
    chekUrl(urlString:"localhost")
    chekUrl(urlString:"yandex.")
    chekUrl(urlString:"коряга")
    chekUrl(urlString:"http:///a")
    chekUrl(urlString:"ftps://foo.bar/")
    chekUrl(urlString:"rdar://1234")
    chekUrl(urlString:"h://test")
    chekUrl(urlString:":// should fail")
    chekUrl(urlString:"http://-error-.invalid/")
    chekUrl(urlString:"http://.www.example.com/")
}

func chekUrl(urlString: String) {
    var result = ""
    if urlString.isUrl {
        result += "url: "
    } else {
        result += "not url: "
    }
    result += "\"\(urlString)\""
    print(result)
}

Результат

введіть тут опис зображення


1

Завдання С

- (BOOL)validateUrlString:(NSString*)urlString
{
    if (!urlString)
    {
        return NO;
    }

    NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];

    NSRange urlStringRange = NSMakeRange(0, [urlString length]);
    NSMatchingOptions matchingOptions = 0;

    if (1 != [linkDetector numberOfMatchesInString:urlString options:matchingOptions range:urlStringRange])
    {
        return NO;
    }

    NSTextCheckingResult *checkingResult = [linkDetector firstMatchInString:urlString options:matchingOptions range:urlStringRange];

    return checkingResult.resultType == NSTextCheckingTypeLink && NSEqualRanges(checkingResult.range, urlStringRange);
}

Сподіваюся, це допомагає!


0

Ви хотіли перевірити, чи те, що користувач ввів, є URL-адресою? Це може бути настільки просто, як регулярний вираз, наприклад, перевірити, чи містить рядок www.(це спосіб, за допомогою якого yahoo messenger перевіряє, чи є статус користувача посиланням чи ні).
Сподіваюся, що це допоможе


0

Егоїстично, я б запропонував використовувати KSURLFormatterекземпляр як для перевірки введення, так і для перетворення його на щось, з чим NSURLможна впоратися.


Чи є в цьому присмак iOS?
capikaw

Це повинно чудово працювати на iOS. Якщо цього не сталося, виправте це та надішліть мені запит на витяг або подайте проблему
Mike Abdullah

0

Я створив успадкований клас UITextField, який може обробляти всі види перевірки за допомогою рядка регулярних виразів. Для цього вам просто потрібно дати їм усі рядки регулярних виразів послідовно та їх повідомлення, яке ви хочете показати, коли перевірка не вдалася. Ви можете перевірити мій блог для отримання додаткової інформації, це дійсно допоможе вам

http://dhawaldawar.wordpress.com/2014/06/11/uitextfield-validation-ios/


0

Розширюючи відповідь @ Anthony до швидкого, я написав категорію, Stringяка повертає необов'язкову NSURL. Повертається значення, nilякщо Stringнеможливо перевірити, що це URL-адреса.

import Foundation

// A private global detector variable which can be reused.
private let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue)

extension String {
  func URL() -> NSURL? {
    let textRange = NSMakeRange(0, self.characters.count)
    guard let URLResult = detector.firstMatchInString(self, options: [], range: textRange) else {
      return nil
    }

    // This checks that the whole string is the detected URL. In case
    // you don't have such a requirement, you can remove this code
    // and return the URL from URLResult.
    guard NSEqualRanges(URLResult.range, textRange) else {
      return nil
    }

    return NSURL(string: self)
  }
}

0
func checkValidUrl(_ strUrl: String) -> Bool {
    let urlRegEx: String = "(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
    let urlTest = NSPredicate(format: "SELF MATCHES %@", urlRegEx)
    return urlTest.evaluate(with: strUrl)
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.