Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于排除特定字符串的正则表达式_Regex_Regex Negation_Regex Lookarounds - Fatal编程技术网

Regex 用于排除特定字符串的正则表达式

Regex 用于排除特定字符串的正则表达式,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,我目前正在实施一个身份管理解决方案,该解决方案将为用户提供管理其所有端点帐户的能力 目前,我们的公司密码策略符合默认Windows要求:必须包含数字或特殊字符等 不幸的是,在新系统的密码策略中,我们可以要求一个数字,一个特殊的,或者两者都需要,但不能要求“其中一个”。然而,新系统允许通过正则表达式进行验证 目前,我们将此设置为不允许以下正则表达式: .*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].* 这很有效。然而,我们想改变它,允许一个数字或一个特殊的,同时也不允许

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

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

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

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

.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*
这很有效。然而,我们想改变它,允许一个数字或一个特殊的,同时也不允许前面的。以下是我尝试过的:

((?=.*\d.*)|(?=.*[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\].*))(?!.*[pP][aA4][sS$]{2}[wW][oO0][rR][dD].*)
((?=.*\d.*)(?=.[-'!\$%&()*+,./:;?@[\]\^{{124}~\\].])(?!.[pP][aA4][sS$]{2}[wW][oO0][rR dD].)
但是,我无法实现这一点。数字/特殊组工作正常,而单词组工作正常。它确实可以查看字符串末尾是否使用了“密码”或某些变体,但不是在开头


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

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

^([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*(\d|[-'"!#$%&()*+,./:;<=>?@[\]\^_`{|}~\\])([^pP\d!\-'"#$%&()*+,./:;<=>?@[\]\^_`{|}~\\]|[pP](?![aA4][sS$]{2}[wW][oO0][rR][dD]))*$
鉴于目前的码码码>(([^pP\d!第三部分,,,,,/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[[[[[[[[[[pP]网页网页网页[aA4][[aA4][赛赛元][赛赛赛赛元]][[[[[[[[3.............................................................................................................(?![aA4][sS$]{2}[wW][oO0][rR][dD]))*$
我已经在Sublime文本编辑器中成功地测试了这一点。

我是否正确理解了这一点,您必须使用数字或特殊字符,但不允许使用数字和特殊字符?您必须使用数字或特殊字符,但如果愿意,您可以同时使用这两种字符。正则表达式的这一部分工作正常。我特别想要一个关于排除“密码”位的答案。你能按顺序测试两个不同的正则表达式吗?首先,你要测试一般条款的允许性。第二个正则表达式将匹配禁止的模式-如果它匹配,您将拒绝。对不起,我不知道您所说的“其中一个”是什么意思。用户必须有一个号码或特殊号码,并且两者都可以使用。但这肯定意味着他们可以使用“其中一个”号码或特殊号码?谢谢Hobo先生;我最终把这个任务交给了一个承包商,但我已经测试了你的解决方案,它看起来确实很好。我要将此标记为已接受的解决方案。:)当时应该把它传给我:)