正则表达式验证Active Directory默认密码复杂性

geo*_*ffc 5 regex passwords active-directory

我有一个密码列表,我需要检查并确定它们是否符合AD的默认3 of 4规则.

规则包含以下4个要求中的3个:小写字符(az)大写字母(AZ)数字(0-9)特殊字符(!@#$%^&*()_ + =)

我还在学习正则表达式.我知道如何只选择符合任何一个字符的情况,但我不知道如何做到4个中的3个.

作为旁注,AD复杂性还有两个重要的细微之处(但不在原始问题的范围之内).

它实际上是3的5.第五个是Unicode字符.很高兴用这个更新正则表达式.

另一种是你不能在密码中使用sAMAccountName值(不区分大小写),也不能将displayName值拆分为以空格,逗号,短划线,下划线,磅,管道等标记分割的标记(3个字符和3个字符)更长)不能在密码中整体,不区分大小写.

Sau*_*gin 13

如果你真的想要一个大的正则表达式,它将是这样的:

(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
Run Code Online (Sandbox Code Playgroud)

请注意,它还强制密码长度介于8到255个字符之间.您可以更改第一部分中的"{8,255}"部分以调整长度要求.值得注意的是,这对我来说是一个标准的ASP.NET RegularExpressionValidator控件.

比赛:"Passw0rd""passW @ rd""1B2a345 @#$%"

不匹配:"123123123""密码""asdf&"

来源(Matthew Hazzard通过RegExLib.com)