【问题标题】:How to skip @Pattern validation on a blank field?如何在空白字段上跳过@Pattern 验证?
【发布时间】:2011-10-20 14:39:06
【问题描述】:

我在我的 JSF 托管 bean 中使用 JSR303 bean 验证注释来验证文本输入。以下是注释:

@Size(min=0, max=20, message = "Value cannot be more than 20 characters")
@Pattern(regexp = "[^|]", message = "Invalid entry. See field description.")  
private String txt;

当在字符串中找到管道字符时,@Pattern 注释会引发错误。但是当用户将该字段留空并单击提交时,也会引发错误。为什么字段为空时会发生这种情况?

【问题讨论】:

  • 您可能会遇到提交时 txt 为空的问题。试试 ...txt = "" 咯咯笑。

标签: java regex jsf bean-validation


【解决方案1】:

因为正则表达式[^|] 只需要一个字符来匹配。您应该使用量词:[^|]*

这里有一些测试:

System.out.println(Pattern.matches("[^|]", "")); // false
System.out.println(Pattern.matches("[^|]", "a")); // true
System.out.println(Pattern.matches("[^|]", "aaa")); // false
System.out.println(Pattern.matches("[^|]*", "")); // true
System.out.println(Pattern.matches("[^|]*", "aaa")); // true
System.out.println(Pattern.matches("[^|]*", "a|a")); // false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多