我正在尝试创建一个方法,使用正则表达式找出字符串中是否包含数字、大写字母和特殊字符,如下所示:
func checkTextSufficientComplexity(var text : String) -> Bool{
let capitalLetterRegEx = "[A-Z]+"
var texttest = NSPredicate(format:"SELF MATCHES %@", capitalLetterRegEx)
var capitalresult = texttest.evaluateWithObject("AniP")
println("\(capitalresult)")
let numberRegEx = "[0-9]+"
var texttest1 = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
var numberresult = texttest1.evaluateWithObject(text)
println("\(numberresult)")
let specialCharacterRegEx = "[.*&^%$#@()/]+"
var texttest2 = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
var specialresult = texttest2.evaluateWithObject(text)
println("\(specialresult)")
return capitalresult && numberresult && specialresult
}
问题是下面的正则表达式[A-Z]+仅对例如AVATAR返回True,而对于Avatar返回False。我的要求是只要字符串中至少包含一个大写字母,正则表达式就应该返回True。
evaluateWithObject
函数调用尝试匹配整个字符串,因此,给出这样的字符串:Hello123
,以及一个正则表达式:[A-Z]+
,Swift会将其映射为类似于^[A-Z]+$
的东西。这意味着它将期望整个提供的字符串完全匹配。请尝试进行更改,如果有效,我将发布一篇带有更多信息的答案。我不是Swift开发人员,所以我可能是错的,这就是为什么我把它作为评论发布的原因。 - npinti