当前位置: 首页 > 知识库问答 >
问题:

spring数据中带有@Pattern注释的正则表达式验证

赵君植
2023-03-14

我需要密码验证(例如,密码必须包含至少4个字符,最大8和最小1个数字)。我有模型(当然有getters和setters):

   @Entity
public class User implements Serializable{


    /**
     * 
     */
    private static final long serialVersionUID = 5534441879591858724L;

    @Id
    @GeneratedValue
    private long id;

    @NotBlank
    @Email
    private String email;

    @Pattern(regexp = "^(?=.*\\d).{4,8}$", flags = Flag.UNICODE_CASE)
    private String password;

    @NotBlank
    @Size(min=2, max=30)
    private String name;

在将用户信息保存到数据库期间,我捕捉到ConstraintViolationException,并使用此异常中的信息在注册期间通知用户由于无效长度等原因必须更正哪些字段。

通过验证一切正常,但密码则不行。我将正则表达式从这个模型类中签出,它工作正常,但当我将这个正则表达式放入注释参数(@Pattern(regexp=“^(?=.*\\d)。{4,8}$”,flags=Flag。UNICODE_CASE))它不工作,我有一个错误:

HHH000346:托管刷新期间的错误[类的验证失败[pl.rpf.kingdom.models.用户]在组的持续时间[javax.validation.groups.默认,]约束违规列表:[ConstraintViolationImpl{interpolatedMessage='必须匹配"^(?=.*\d)。{4,8}$"',属性路径=密码,rootBeanClass=类pl.rpf.kingdom.models.用户,消息模板='{javax.validation.constraints.Pattern.message }'} ]]

请帮助我理解这个错误,也许你有一些想法如何解决这个问题。

共有1个答案

南门飞
2023-03-14

问题是密码加密,我忘了。Regex matches mathod始终为false,因为它试图在加密后比较密码。在密码加密之前,我将验证放在模型类之外,从而解决了这个问题。解决这个问题的另一种方法是,在试图将表单保存到数据库之前,使用spring@Valid注释来验证表单(在我的情况下,其他情况下可能会出现问题)。

 类似资料:
  • 问题内容: 我需要使用批注+正则表达式对电子邮件进行验证。我尝试使用以下内容: 但是,当电子邮件字段中的电子邮件地址不正确时,我不知道如何打印错误消息。有任何想法吗? 问题答案: 首先,您应该在注释中添加一个属性。假设您的邮件变量是某个类User的一部分: 然后,您应该定义一个验证器: 然后找到验证错误。

  • 问题内容: 我有一些复杂的正则表达式,为了便于阅读和维护,需要对其进行注释。Java规范相当简洁,为了使它正常工作,我努力了很长时间。我终于抓住了我的错误,并将其发布为答案,但对于保持正则表达式的任何其他建议,我将不胜感激 作为示例,我想在一个简单的名称解析器中注释(patternS的)子组件: 编辑:我也将感谢(?x)格式的示例。 编辑:@ geowa4有一个很好的建议,可以避免嵌入注释。自从J

  • 本文向大家介绍解释Java正则表达式中的子表达式“ [...]”,包括了解释Java正则表达式中的子表达式“ [...]”的使用技巧和注意事项,需要的朋友参考一下 子表达式“ [...] ”匹配括号中指定的任何单个字符。 例子1 输出结果 例子2 以下Java程序从用户那里接收5个字符串,并打印包含元音字母的字符串/单词。 输出结果

  • 本文向大家介绍JS表单数据验证的正则表达式(常用),包括了JS表单数据验证的正则表达式(常用)的使用技巧和注意事项,需要的朋友参考一下 常用的验证方法: js正则表达式--验证表单 检测手机号码:/0?(13|14|15|18)[0-9]{9}/ 检测用户名:(数字,英文,汉字,下划线,中横线):/^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/ 密码:(数字,英文,下划线,中横线)

  • 我不想有几个正则表达式都必须满足。相反,我希望提供的正则表达式中只有一个是有效的,而不是其他正则表达式。例如,我想要一个字符串来满足V4格式或V6格式的IP需求,但不能同时满足这两种格式的需求。

  • 主要内容:标签属性,JSF验证整数范围实例标签用于将字符串值验证为所需格式。 以下代码显示如何使用标记。 标签属性 属性 说明 pattern 格式化模式 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateRegularExpression,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result.xhtml 的代码内容如下所示 - 文件: