我目前正在实施身份管理解决方案,该解决方案将为用户提供管理其所有端点帐户的能力。正则表达式排除特定字符串
目前,我们公司的密码策略符合默认的Windows要求:必须包含数字或特殊字符等。
不幸的是,在新系统的密码策略中,我们可能需要一个数字,一个特殊数字或两者,但不是“其中之一”。但是,新系统允许通过正则表达式进行验证。
目前,我们有这个设置为禁止以下的正则表达式:
.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*
这工作得很好。不过,我们希望将此更改为允许一位数字或一个特殊字符,同时还要DISALLOWING前一个。这里是我曾尝试过的:
((?=.*\d.*)|(?=.*[-'"!#$%&()*+,./:;<=>[email protected][\]\^_`{|}~\\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)
但是,我无法得到这个工作。数字/特殊组可以正常工作,但单词组不会。它确实看到在字符串的END处是否使用“密码”或一些变体,但不在开始处...
有什么建议吗?系统使用标准(Perl风格)正则表达式。
我是否正确理解这一点,您必须使用数字或特殊字符,但不允许使用数字和特殊字符? – Eric 2013-02-12 22:48:58
您必须使用数字或特殊字符,但如果您愿意,您可以同时使用这两种字符。正则表达式的那部分工作正常。我特别寻找关于排除“密码”位的答案。 – vermi 2013-02-12 22:52:39
你可以依次测试2个不同的正则表达式吗?首先你要测试一般条款的允许性。第二个正则表达式会匹配禁止的模式 - 如果是,则拒绝。 – collapsar 2013-02-15 16:36:51