gpt4 book ai didi

regex - 在Grails中使用自定义验证时给出自定义错误消息的问题

转载 作者:行者123 更新时间:2023-12-02 14:50:31 25 4
gpt4 key购买 nike

我有以下问题:

User.groovy

类用户{

String userName
String passwd

static constraints = {
userName(nullable:false, maxSize:20)
passwd(password:true,
validator: {val, obj, errors->

if (!(obj.passwd.matches("(.*[\\d])"))) errors.rejectValue('passwd', 'noNumber')

if (!obj.passwd.matches("(.*[\\W])")) errors.rejectValue('passwd', 'noSpecialCh')

if (!obj.passwd.matches("(.*[a-z])")) errors.rejectValue('passwd', 'noLower')

if (!obj.passwd.matches("(.*[A-Z])")) errors.rejectValue('passwd', 'noUpper')

}
)
}

}

messages.properties

noNumber.racetrack.Users.passwd =密码应至少包含一个数字
noSpecialCh.racetrack.Users.passwd =密码应至少包含一个特殊字符
noLower.racetrack.Users.passwd =密码应至少包含一个小写字母
noUpper.racetrack.Users.passwd =密码应至少包含一个大写字母

这些代码行给我错误消息。

然而,

当我在密码中输入“1222s”时,会显示错误消息:
密码至少应包含一个数字
密码至少应包含一个特殊字符
密码至少应包含一个大写字母

即使我输入了号码。

当我在密码中输入“sss1”时,会显示错误消息:
密码至少应包含一个小写字母
密码至少应包含一个特殊字符
密码至少应包含一个大写字母

即使我输入了一些小写字母。

好像它检查最后一个字符并给出错误消息。

我在User.groovy或messages.properties中做错了什么?我的正则表达式错了吗?

请帮我。

最佳答案

您的正则表达式有误。数字应为\d+,特殊字符应为\W+[a-z]+等。特殊符号以一个斜杠转义。 +的意思是-一个或多个模式出现。无需.*并与()分组。

关于regex - 在Grails中使用自定义验证时给出自定义错误消息的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com