使用Grails中的正则表达式验证密码

时间:2012-03-15 22:35:04

标签: java regex grails

我正在使用以下正则表达式

'^(?!.*(.)\\{4})(?=.*[0-9 \\Q~!@#$%^&*()-_=+[]{}|;:,.<>/?]{2,})(?=.*[a-zA-Z]{2,}){8,50}$'

条件:

  • 密码必须至少包含8个字符且不得超过50个。
  • 密码必须至少包含2个字母。
  • 密码不能包含4个以上相同字符的实例。
  • 密码必须至少包含5个唯一字符。
  • 密码必须包含至少2个唯一编号(符号计为数字)。

当我尝试使用Grails运行应用程序时,它会抛出未关闭的字符类异常。我也怀疑必须检查5个唯一字符条件的部分。帮我解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

不确定grails是否对此有任何特殊处理但是在java中,presumbaly grails委托给你需要转义特殊字符,unclosed字符类几乎肯定是由+和{}之间的[]引起的。

你最好使用一些字符类\ p {punct}来避免这些问题。

尽管如此,这在代码中会更容易和更清晰。在迭代密码时定义各种字符集并检查成员资格。这有一个额外的好处,你可以明确地避免SQL注入恶意。