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