Проверка, содержит ли строка какие-либо специальные символы в swift, при этом допускаются все языки - PullRequest
1 голос
/ 14 февраля 2020

Я видел похожий пост, но ни один из ответов не помог мне. Я ищу, чтобы проверить, не содержит ли строка какие-либо специальные символы, используя быстрые регулярные выражения. Я хочу разрешить другие iPhone буквы клавиатуры, например, такие как китайский, хинди, арабский c, корейский и т. Д. c .. Хотя я не хочу разрешать специальные символы, такие как +, &, #, $,%.

Я пытался использовать:

func usernameTest(testStr:String) -> Bool {

        return testStr.range(of: "^[ !\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+", options: .regularExpression) != nil
    }

Это не сработало. Я думал, что он проверит, используются ли какие-либо специальные символы, но когда я проверял такие фразы, как "Tom @@@". и воля!!" он вернулся ложным. Я ожидал, что это вернет true, так как строки, которые я передал, содержали один или несколько специальных символов в диапазоне.

Любая помощь будет принята, поскольку мы хотим, чтобы наши пользователи могли создавать свои имена пользователей. на любом языке, но мы по-прежнему не хотим использовать пробелы или специальные символы.

Ответы [ 3 ]

0 голосов
/ 14 февраля 2020

Вы должны удалить символ «^» в регулярном выражении. Итак, ваша функция должна выглядеть так:

func usernameTest(testStr:String) -> Bool {
return testStr.range(of: "[ !\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+", options: .regularExpression) != nil }
0 голосов
/ 14 февраля 2020
func usernameTest(testStr:String) -> Bool {
     let letters = CharacterSet.punctuationCharacters
     let range = testStr.rangeOfCharacter(from: letters)
     // range will be nil if no letters is found
     if range != nil {
        return true
     }
     else {
        return false
     }
}

попробуйте это

0 голосов
/ 14 февраля 2020

вы можете попробовать таким образом

var charSet = CharacterSet.init(charactersIn: "@#$%+_)(")
    var string2 = "test@3"

    if let strvalue = string2.rangeOfCharacter(from: charSet)
    {
        print("true")
    }

в инициализации набора символов вы можете указать специальные символы, которые вы хотите проверить на наличие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...