首页 > 解决方案 > 在允许所有语言的同时快速检查字符串是否包含任何特殊字符

问题描述

我看到了与此类似的帖子,但那里的答案都没有帮助我。我正在寻找使用快速正则表达式检查字符串是否不包含任何特殊字符。我想允许其他 iPhone 键盘字母,尽管像中文、印地语、阿拉伯语、韩语等。但我只是不想允许像 +、&、#、$、% 这样的特殊字符。

我试过使用:

func usernameTest(testStr:String) -> Bool {

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

但是这没有用。我以为它会检查是否使用了任何特殊字符,但是当我测试诸如“Tom@@@”之类的短语时。还会!!” 它返回错误。我本来希望这会返回 true,因为我传入的字符串包含该范围内的一个或多个特殊字符。

任何帮助将不胜感激,因为我们希望我们的用户能够以任何语言创建他们的用户名,但我们仍然不希望允许空格或特殊字符。

标签: iosswiftregexnsregularexpression

解决方案


你可以试试这种方式

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

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

在字符集初始化中,您可以提供要检查出现的特殊字符。


推荐阅读