3

我目前正在实施一个身份管理解决方案,该解决方案将为用户提供管理其所有端点帐户的能力。

目前,我们公司的密码策略符合默认的 Windows 要求:必须包含数字或特殊字符等。

不幸的是,在新系统的密码策略中,我们可以要求一个数字、一个特殊的或两者兼有,但不能“两者之一”。但是,新系统允许通过正则表达式进行验证。

目前,我们将此设置为 DISALLOW 以下正则表达式:

.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*

这工作得很好。但是,我们想将其更改为 ALLOW 一个数字或一个特殊的,同时也禁止前一个。这是我尝试过的:

((?=.*\d.*)|(?=.*[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)

但是,我无法让它工作。数字/特殊组可以正常工作,但是单词组不能。它确实会查看是否在字符串的末尾使用了“密码”或某些变体,但不是在开头...

有什么建议么?系统使用标准(Perl 风格)正则表达式。

4

1 回答 1

0

通过一些技巧,可以组合您的正则表达式。

^([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*(\d|[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\])([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*$

我已经在 Sublime 文本编辑器中成功测试了这一点。

于 2013-02-19T20:37:29.183 回答