正则表达式,密码至少8个字符,包括至少三个字符:大写字符,小写字符,数字和特殊字符

时间:2019-01-10 06:48:48

标签: ios regex

以下是我目前用于验证密码的正则表达式:至少一个大写字符,至少一个小写字符,至少一个数字和最小8个字符。

func isValidPassword() -> Bool {
    let passwordRegEx = "^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$"
    return NSPredicate(format:"SELF MATCHES %@", passwordRegEx).evaluate(with: self)
}

我现在想包含特殊字符并按如下所示更新验证规则。

至少8个字符,至少应包括3个字符:大写字符,小写字符,数字和特殊字符。

此要求的正则表达式是什么?

1 个答案:

答案 0 :(得分:2)

我认为您最好编写一个for循环来遍历单个字符并跟踪已通过哪个createria,而不是创建越来越复杂的正则表达式。

  • 任何程序员在短短几个月内就很难理解/维护正则表达式。而且任何程序员都将在几个月内加入您的行列
  • 如果需求不匹配,则可以向用户提供详细的信息。您可能会显示一条消息“在密码中找不到大写字符”等。
  • 您可以(更多)轻松实现诸如“不允许重复数字”之类的内容
  • 尽管性能无关紧要,但regexp比循环慢得多。