匹配字符串的最后一个字符失败

Matching last character of string fails

我不明白为什么这个非常简单的正则表达式会失败:

"3243" ==~ /^\d+$/ 

我希望 val 只是一串数字。以下 return 正确:

"213213" ==~ /^\d+/ 
"213213dsadasd" ==~ /^\d+/ 

这些是域对象中字段验证的一部分。这是完整的代码:

    static constraints = {
       intValue validator: {val,obj ->

        if(val){
            "${val}" ==~ /^[0-9]*$/ 
        }     
       }
    }

以上示例将接受“321a31”或“321aa”...不确定正则表达式是否错误或其他问题...

intValue 是一个整数,尽管默认验证会接受像“32112dsa”这样的字符串(并且只存储数字部分),这就是我尝试创建自定义验证器的原因。

正则表达式没有任何区别的原因是到达域对象字段的值已经被自动解析。可以在此答案中找到解决方法:Grails GORM integer validation