Grails验证密码

Grails验证密码,grails,Grails,在控制器中,我如何验证密码,使其至少包含1个字母、1个数字、1个特殊字符,并且长度至少为8位。我尝试使用的代码如下所示: boolean validatePassword(String password) { System.out.println("In validate") def pattern = /^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%*&+()]).*$/ def matcher = password

在控制器中,我如何验证密码,使其至少包含1个字母、1个数字、1个特殊字符,并且长度至少为8位。我尝试使用的代码如下所示:

  boolean validatePassword(String password) {
    System.out.println("In validate")
   def pattern = /^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%*&+()]).*$/
    def matcher = password =~ pattern
    System.out.println("HERERERE")
    return matcher.getCount() ? true : false
}
如果说一切都无效,这就不起作用。 我已经安装了SpringSecurityUI插件。有什么方法可以使用它的验证功能吗?
我知道我可以用它来编码密码

我不想在一个正则表达式中做所有的事情,而是将测试分开。因为在Groovy中,
Matcher
通过调用
find()
强制为boolean,所以下面应该可以工作,并使意图更加清晰

boolean validatePassword(String pass) {
  return (pass) && (pass.length() > 7) && (pass =~ /\p{Alpha}/) &&
         (pass =~ /\p{Digit}/) && (pass =~ /[!@#$%*&+()]/)
}

如果您需要更复杂的东西,还有一个很好的java库vtpassword