当前位置: 首页 > 知识库问答 >
问题:

密码的正则表达式最少为8个字符,其中至少包括3个:大写字符、小写字符、数字和特殊字符

鱼浩荡
2023-03-14

下面是我当前用于验证密码的正则表达式:至少一个大写字符,至少一个小写字符,至少一个数字,长度至少为8个字符。

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

共有1个答案

冯阳云
2023-03-14

我认为您最好编写一个for-loop来迭代单个字符,并跟踪createria已经通过了哪些字符,而不是创建一个越来越复杂的正则表达式。

  • 任何程序员在短短几个月内都很难理解/维护正则表达式。而任何程序员在几个月内包括您
  • 如果需求不匹配,您可以向用户提供详细信息。您可以显示消息“密码中找不到大写字符”等
  • 您可以(更)轻松地实现诸如“不允许重复数字”之类的内容
  • 虽然性能不重要,但regexp会比循环慢得多。
 类似资料: