Подтверждение названия города Regex Swift 4 - PullRequest
0 голосов
/ 08 января 2019

Я пытался реализовать проверку регулярного выражения для заданного названия города.

Мое регулярное выражение должно соответствовать названиям городов, таким как:

NY
San Francisco
München
København
Saint-Tropez
St. Lucia

До сих пор я искал в Интернете подобное регулярное выражение, но мне было трудно пытаться реализовать его быстро.

это регулярное выражение, которое я придумал, похоже, оно работает на других языках, но не на быстром:

^[a-zA-Z\\u0080-\\u024F\\s\\/\\-\\)\(\`\.\"\']+$

Также в качестве дополнительной информации я хотел бы реализовать ее в методе делегата UITextField:

shouldChangeCharactersIn

как то так:

override func textField(_ textField: UITextField,
                            shouldChangeCharactersIn range: NSRange,
                            replacementString string: String) -> Bool {

        return validNameRegex.matches(string)
    }

с использованием расширения NSRegularExpression:

extension NSRegularExpression {

    convenience init(_ pattern: String) {
        do {
            try self.init(pattern: pattern)
        } catch {
            preconditionFailure("Illegal regular expression: \(pattern).")
        }
    }


    func matches(_ string: String) -> Bool {
        let range = NSRange(location: 0, length: string.utf16.count)
        return firstMatch(in: string, options: [], range: range) != nil
    }
}

Надеюсь, кто-нибудь может мне помочь. Заранее спасибо и с новым годом :) 1023 *

1 Ответ

0 голосов
/ 11 января 2019

В конце концов я использовал это регулярное выражение:

^[a-zA-Z\u{0080}-\u{024F}\\s\\/\\-\\)\\(\\`\\.\\\"\\']*$

Основная проблема заключалась в удалении символов "\" и {} в Unicode

...