我目前正在实施一个身份管理解决方案,该解决方案将为用户提供管理其所有端点帐户的能力。
目前,我们公司的密码策略符合默认的 Windows 要求:必须包含数字或特殊字符等。
不幸的是,在新系统的密码策略中,我们可以要求一个数字、一个特殊的或两者兼有,但不能“两者之一”。但是,新系统允许通过正则表达式进行验证。
目前,我们将此设置为 DISALLOW 以下正则表达式:
.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*
这工作得很好。但是,我们想将其更改为 ALLOW 一个数字或一个特殊的,同时也禁止前一个。这是我尝试过的:
((?=.*\d.*)|(?=.*[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)
但是,我无法让它工作。数字/特殊组可以正常工作,但是单词组不能。它确实会查看是否在字符串的末尾使用了“密码”或某些变体,但不是在开头...
有什么建议么?系统使用标准(Perl 风格)正则表达式。