我目前正在实施一种身份管理解决方案,该解决方案将为用户提供管理其所有端点帐户的能力。
目前,我们的公司密码策略符合默认的Windows要求:必须包含数字或特殊字符等。
不幸的是,在新系统的密码策略中,我们可以要求一个号码,一个特殊号码或两者,但不是“其中之一”。但是,新系统允许通过正则表达式进行验证。
目前,我们已将此设置为DISVEROW以下正则表达式:
.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*
这非常有效。但是,我们想将此更改为允许数字或特殊,同时也禁用前一个。这是我尝试过的:
((?=.*\d.*)|(?=.*[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)
然而,我无法让它发挥作用。数字/特殊组工作正常,但字组不能。它确实看到字符串的END处是否使用了“密码”或某些变体,但不是在开头......
有什么建议吗?系统使用标准(Perl风格)正则表达式。
答案 0 :(得分:0)
通过一些技巧可以合并你的正则表达式。
^([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*(\d|[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\])([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*$
我已经在Sublime文本编辑器中成功测试了这个。