首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查Swift中的字符串是否包含特殊字符

检查Swift中的字符串是否包含特殊字符
EN

Stack Overflow用户
提问于 2014-12-30 17:45:22
回答 6查看 64.9K关注 0票数 38

我必须检测一个字符串是否包含任何特殊字符。我该怎么检查呢?Swift支持正则表达式吗?

代码语言:javascript
复制
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
if (searchTerm!.rangeOfCharacterFromSet(characterSet).location == NSNotFound){
    println("Could not handle special characters")
}

我尝试了上面的代码,但只有在输入第一个字符作为特殊字符时才匹配。

EN

回答 6

Stack Overflow用户

发布于 2014-12-30 17:52:54

反转您的字符集将起作用,因为您的字符集包含所有有效字符:

代码语言:javascript
复制
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
if (searchTerm!.rangeOfCharacterFromSet(characterSet.invertedSet).location == NSNotFound){
    println("No special characters")
}

希望这能帮上忙..:)

票数 6
EN

Stack Overflow用户

发布于 2018-01-16 21:30:58

密码验证:-(密码长度至少为8个字符,一个特殊字符,一个大写字母,一个小写字母和一个数字)

代码语言:javascript
复制
var isValidateSecialPassword : Bool {

        if(self.count>=8 && self.count<=20){
        }else{
            return false
        }
        let nonUpperCase = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZ").inverted
        let letters = self.components(separatedBy: nonUpperCase)
        let strUpper: String = letters.joined()

        let smallLetterRegEx  = ".*[a-z]+.*"
        let samlltest = NSPredicate(format:"SELF MATCHES %@", smallLetterRegEx)
        let smallresult = samlltest.evaluate(with: self)

        let numberRegEx  = ".*[0-9]+.*"
        let numbertest = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
        let numberresult = numbertest.evaluate(with: self)

        let regex = try! NSRegularExpression(pattern: ".*[^A-Za-z0-9].*", options: NSRegularExpression.Options())
        var isSpecial :Bool = false
        if regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(), range:NSMakeRange(0, self.count)) != nil {
            print("could not handle special characters")
            isSpecial = true
        }else{
            isSpecial = false
        }
        return (strUpper.count >= 1) && smallresult && numberresult && isSpecial
    }
票数 5
EN

Stack Overflow用户

发布于 2015-11-20 18:28:05

@Martin R答案很棒,我只是想把它(第二部分)更新到Swift 2.1版本

代码语言:javascript
复制
let regex = try! NSRegularExpression(pattern: ".*[^A-Za-z0-9].*", options: NSRegularExpressionOptions())
if regex.firstMatchInString(searchTerm!, options: NSMatchingOptions(), range:NSMakeRange(0, searchTerm!.characters.count)) != nil {
    print("could not handle special characters")
}

我使用try!是因为我们可以确定它创建了一个正则表达式,它不是基于任何动态类型的数据

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27703039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档