我必须检测一个字符串是否包含任何特殊字符。我该怎么检查呢?Swift支持正则表达式吗?
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
if (searchTerm!.rangeOfCharacterFromSet(characterSet).location == NSNotFound){
println("Could not handle special characters")
}
我尝试了上面的代码,但只有在输入第一个字符作为特殊字符时才匹配。
发布于 2014-12-30 17:52:54
反转您的字符集将起作用,因为您的字符集包含所有有效字符:
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
if (searchTerm!.rangeOfCharacterFromSet(characterSet.invertedSet).location == NSNotFound){
println("No special characters")
}
希望这能帮上忙..:)
发布于 2018-01-16 21:30:58
密码验证:-(密码长度至少为8个字符,一个特殊字符,一个大写字母,一个小写字母和一个数字)
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
}
发布于 2015-11-20 18:28:05
@Martin R答案很棒,我只是想把它(第二部分)更新到Swift 2.1版本
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!
是因为我们可以确定它创建了一个正则表达式,它不是基于任何动态类型的数据
https://stackoverflow.com/questions/27703039
复制相似问题