Agregué la anotación @Pattern a un parámetro de consulta en mi controlador de descanso (SpringBoot Kotlin). Me gustaría que la expresión regular en el patrón aceptara:
opción A u opción B o nulo (nada/una cadena vacía)
Lo siguiente funciona, pero por supuesto no incluye la opción vacía:
@Pattern(regexp = "(?i)optionA||(?i)optionB")Esto no funciona -
@Pattern(regexp = "(?i)optionA||(?i)optionB||^\\s*\$")¿Puede alguien ayudarme con esto? :) ¡Gracias!
Probé esta opción A|opciónB|^\s$ en https://regex101.com/ y funcionó bien. ¿Podrías probar tu aplicación para comprobarlo?
Dentro de la anotación @Pattern , el patrón se usa para hacer coincidir toda la cadena, por lo que puede usar
@Pattern(regexp = "(?i)(?:optionA)?") que en realidad es \A(?i)(?:optionA)?\z :
\A - inicio de cadena (implícito aquí)(?i) - opción de bandera incrustada que no distingue entre mayúsculas y minúsculas(?:optionA)? - un grupo opcional que no captura que coincide con la optionA o una cadena vacía\z - final de la cadena (implícito aquí). El null es una dirección de memoria, no una cadena, no se puede comparar con expresiones regulares, ya que la expresión regular solo trata con cadenas.