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

iklwldmw  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(87)

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

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

我希望瓦尔只是一串数字。以下返回true:

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

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

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

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

上面的例子将接受“321a31”或“321aa”.不知道是正则表达式错了还是别的什么东西掉了...
intValue是一个验证器,尽管默认验证会接受像'32112dsa'这样的字符串(并且只存储数字部分),这就是为什么我试图创建一个自定义验证器。

svmlkihl

svmlkihl1#

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

相关问题