【发布时间】:2019-06-05 00:03:23
【问题描述】:
以下是我目前用于验证密码的正则表达式:至少一个大写字符、至少一个小写字符、至少一个数字和至少 8 个长度的字符。
func isValidPassword() -> Bool {
let passwordRegEx = "^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$"
return NSPredicate(format:"SELF MATCHES %@", passwordRegEx).evaluate(with: self)
}
我现在想包含特殊字符并更新验证规则如下。
最少 8 个字符,至少应包括其中的 3 个:大写字符、小写字符、数字和特殊字符。
这个要求的正则表达式是什么?
【问题讨论】:
-
试试这个
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$ -
我建议您为每个字符集创建四个正则表达式,并使用编程逻辑单独检查您的密码是否有效,如果任何三个正则表达式有效,则为真,否则为假。虽然我可以提供纯正则表达式解决方案,但正则表达式会有点太大,看起来有点复杂且无法维护。
-
您可能会发现Reference - Password Validation 很有用。