Regex @模式字符串javabean验证

Regex @模式字符串javabean验证,regex,bean-validation,Regex,Bean Validation,我的bean有一个名为description的属性。 我需要写一个正则表达式来验证字符串中是否有,然后它应该用双引号括起来 @Pattern(regexp = "[,?""]*$") did not work for me. 如果在双引号代码中有双引号,则该双引号将不会被接受为有效的Java字符串,请尝试在嵌套的双引号之前设置“\”[]是正则表达式中的OR运算符,这意味着指定元素之一位于括号中。因此,我认为根据您的要求,模式应为: @Pattern(regexp = "((\",\")|.*)

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

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

如果在双引号代码中有双引号,则该双引号将不会被接受为有效的Java字符串,请尝试在嵌套的双引号之前设置“\”[]是正则表达式中的OR运算符,这意味着指定元素之一位于括号中。因此,我认为根据您的要求,模式应为:

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

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

  • 有效:“A,B”
  • 有效:“A,B,C”
  • 有效日期:AB
  • 有效:“AB”
  • 无效:A、B
如果是这样的话,那么以下方法应该有效:

@Pattern(regexp = "^([^,]*|\"[^,]*(,[^,]*)+\")*$")
下面是正则表达式重要部分的细分:

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

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

如果有什么?逗号
?它不起作用。我的字符串可能包含也可能不包含逗号(,)。如果它存在,则应该用双引号括起来。@mohan141即使这个?有效:“a,B”无效:a,B如果描述中存在逗号,则整个描述必须用引号括起来。如果没有逗号,则不需要周围的引号。这些是正确的吗?Valid:AB-Valid:AB-Valid:A,B-Invalid:A,B已经根据新信息以及我认为您建议的验证工作方式更新了模式。字符串本身无效,因为您在两者之间使用了双引号。很容易修复。我使用的编辑器试图通过删除转义的可打印字符来聪明地从字符串内部复制文本。