密码表达式未按预期工作

时间:2015-10-19 17:05:05

标签: java regex passwords

  

我有一个密码表达式,如下所示。

它必须允许一个小写字母,一个大写字母,一个数字或一个小写字母,一个大写字母,一个特殊字符或一个小写字母,一个大写字母,一个数字,一个特殊字符。我使用|加入了所有这三个条件要么。它应该是最小8和最多20个字符。它应该只允许特定的特殊字符$ @#!%。但是在这里它允许所有特殊字符,虽然我提到了具体的设置。这是主要问题。我花了很多时间来改变模式,但仍然允许所有特殊字符。 -

  

我不明白为什么它允许^(Marr1234 ^)?

(((?= \ d)(?=。 [AZ])(?= [AZ])(?=。 [$ @# !%]))|((= [AZ])(= 的[AZ])(= [$ @#%]))|?。?。?。!((? = \ d)(?= [AZ])(?=。 [AZ])))。{8,20}

  

任何想法

2 个答案:

答案 0 :(得分:2)

您是否考虑过.{8,20}符合您的意见?这个术语匹配每个字符(. ==每个字符)8到20次......所以这也匹配^ - 字符

答案 1 :(得分:1)

感谢rdmuller的帮助。我能够解决它。 我需要添加范围[A-Za-z0-9]并避免"。"喜欢。{8,20}。

这是我用过的表达式

^(?= \ d)(?=。 [AZ])(?=。* [AZ])[A-ZA-Z0-9] {8,20} $