【问题标题】:Regex for Active Directory password [duplicate]Active Directory 密码的正则表达式 [重复]
【发布时间】:2017-02-24 20:28:14
【问题描述】:

整个上午都在尝试找出我们试图强制执行的 AD 密码限制的正则表达式模式。有什么想法吗?

  • 必须至少有一个小写字符 (a-z)
  • 必须至少包含一个大写字符 (A-Z)
  • 必须至少有一个数字字符 (0-9)
  • 必须至少具有以下特殊字符之一,但必须能够允许所有: ! @ # $ % ^ & * ( ) - _ + = { } [ ] | \ : ; " ' , . ? /

  • 8 到 14 个字符长

可以是任意顺序

我已经尝试了大约 50 种组合,但特殊字符部分让我无法理解。

不幸的是,我在这里或网上找到的不包括括号特殊字符和其他一些字符。

【问题讨论】:

  • 正则表达式很长而且很邪恶...将其分解为多个检查然后返回“不可接受的密码,必须至少有一个小写字符”或“不可接受的密码”更容易,必须至少有一个数字字符 ( 0-9 )' 另外,试试这个,看看这是否有效:(?=^.{8,}$)((?=.*\d)|(? =.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
  • 我非常卡在特殊字符部分上,除此之外我可以处理其他所有部分
  • @siam 你是什么意思?我需要什么?它们是通用密码,只要它们包含上述每种可能性之一,就可以是任意密码
  • @chris85 我们的团队就是这样设置的,我无法控制只有前端的内容
  • 我认为这会降低安全性。您可以修改 dup 上的{8,},我认为它可以适应这种情况。

标签: javascript php regex preg-match


【解决方案1】:

从字符串开头的多个单独前瞻应该可以工作 (demo)

^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[#!@$%^&*()\-_+={}[\]|\\:;"'<>,.?\/]).{8,14}$

^                                              # anchors to start of string
(?=.*?[a-z])                                   # lookahead for lowercase
(?=.*?[A-Z])                                   # lookahead for uppercase
(?=.*?[0-9])                                   # lookahead for numbers
(?=.*?[#!@$%^&*()\-_+={}[\\]|\:;"'<>,.?\/])    # lookahead for special characters
.{8,14}                                        # the actual capture, also sets boundaries for 8-14
$                                              # anchors to end of string

更新为包含 ! 和 @。在第一次测试中错过了它们。

更新为转义连字符。

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2014-01-24
    相关资源
    最近更新 更多