Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么下面的模式验证不起作用_Java_Regex_Spring - Fatal编程技术网

Java 为什么下面的模式验证不起作用

Java 为什么下面的模式验证不起作用,java,regex,spring,Java,Regex,Spring,我只想允许字母数字字符,但上面的验证并不像我预期的那样有效。它允许带有加号(+)的请求通过当使用方括号时,连字符是定义范围的特殊字符,因此如果要匹配“-”,则应将其转义 regexp应该如下所示 @Pattern(regexp = "^[a-zA-Z0-9_-]*$", message = "Only alpha-numeric characters are allowed") private String recipientId; 注意:在测试之后,似乎可以使用连字符而不用在使用括号时转

我只想允许字母数字字符,但上面的验证并不像我预期的那样有效。它允许带有加号(+)的请求通过

当使用方括号时,连字符是定义范围的特殊字符,因此如果要匹配“-”,则应将其转义

regexp应该如下所示

@Pattern(regexp = "^[a-zA-Z0-9_-]*$", message = "Only alpha-numeric characters are allowed")
  private String recipientId;
注意:在测试之后,似乎可以使用连字符而不用在使用括号时转义它

我更喜欢这种方式
(\\w |-)*

\w一个单词字符:[A-zA-Z_0-9]


问题可能不在regexp上,但可能在验证注释的使用方式上。您可以直接在字段上或在getter上使用注释,但不能同时在这两个字段上使用注释。您确定所有注释都遵循相同的编码模式吗


最后,您是否使用注释
@Valid
来实际验证您的输入?

消息中的加号在哪里?
recipientId
的值是多少?“recipientId”:“ee911+23”是-我不希望它接受,而是给我一个消息验证错误。这不起作用。我使用它很奇怪,
“^[a-zA-Z0-9_-]*$”
必须起作用。
[a-zA-Z0-9_\\-]*