@Pattern(regexp = "^[a-zA-Z0-9_-]*$", message = "Only alpha-numeric characters are allowed") private String recipientId;Quiero permitir solo caracteres alfanuméricos, pero la validación anterior no funciona como esperaba. Permite el paso de una solicitud que tenga un signo más (+)
Cuando se usan corchetes, el guión es un carácter especial para definir el rango , por lo que debe escaparse si desea que coincida con "-".
La expresión regular debería verse como
[a-zA-Z0-9_\\-]*Nota: después de la prueba, parece que puede usar guiones sin escapar cuando usa corchetes.
Preferiría así (\\w|-)*
\w Un carácter de palabra: [a-zA-Z_0-9]
Tal vez el problema no esté en la expresión regular, sino en la forma en que se usa la anotación de validación. Puede usar la anotación en el campo directamente o en el captador, pero no en ambos. ¿Está seguro de que siempre sigue el mismo patrón de codificación para todas las anotaciones?
Finalmente, ¿usa la anotación @Valid para validar realmente su entrada?