@Pattern - String java bean验证

时间:2014-06-12 14:39:02

标签: regex bean-validation

我的bean有一个名为description的属性。 我需要编写一个正则表达式来验证字符串中是否有任何字符串,然后它应该用双引号括起来。

@Pattern(regexp = "[,?""]*$") did not work for me.

2 个答案:

答案 0 :(得分:1)

以下内容将接受任何不包含逗号的说明,无论它是否被引号括起来。它还接受包含逗号的任何描述,只要它们也被引号括起来。

  • 有效:" A,B"
  • 有效:" A,B,C"
  • 有效:AB
  • 有效:" AB"
  • 无效:A,B

如果是这种情况,那么以下内容应该有效:

@Pattern(regexp = "^([^,]*|\"[^,]*(,[^,]*)+\")*$")

以下是正则表达式重要部分的细分:

  • ^匹配行首
  • [^,] *匹配零个或多个非逗号
  • (,[^,] *)+匹配至少一组以逗号开头并后跟零个或多个非逗号字符的字符。
  • $匹配行尾

其他()*组件只是意味着这种模式可以重复零次或多次。

答案 1 :(得分:0)

你的双重代码中有双引号,不会被接受为有效的Java字符串,尝试在嵌套双引号之前设置\,[]是正则表达式中的OR运算符,这意味着指定元素之一就在支架。所以我认为你的要求应该是:

@Pattern(regexp = "((\",\")|.*)*$")