【发布时间】:2016-06-14 12:29:37
【问题描述】:
我正在使用验证注释来验证电子邮件字段,这里电子邮件字段不是强制性的,当我点击提交时,它正在验证并在字段为空时抛出错误消息,
以下是注释:
@Pattern(regexp = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$",
message = "registration.label.useremailformat.invalidformat")
@Size(min = 6, max = 20, message = "registration.label.useremail.length")
@SafeHtml
private String userEmailId;
如何在电子邮件字段为空时跳过@Pattern 验证并仅在给定值时验证?任何帮助将不胜感激。
【问题讨论】:
-
-在字符类中的位置错误 -
该模式需要一些文本。试试
regexp = "^(?:[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,}))?$"。另外,检查min参数。 -
@Wiktor Stribiżew - 未显示任何错误消息,但未提交表单
-
是的,可能是因为
@Size限制。如果您删除大小检查并仅使用regexp = "^(?:(?=.{6,20}$)[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,}))?$"会怎样?见this demo。 -
我也删除了@Size,仍然无法正常工作
标签: java regex bean-validation