Expressão regular para remover caracteres especiais em tags JSTL
Eu estou trabalhando em um aplicativo Spring e na página JSPX eu preciso carregar dinamicamente alguns valores da página de propriedades e defini-los como dropdown usando a tag de opções. Eu preciso usar o mesmo texto para o valor de opções e para exibir, mas para o valor de opções, eu preciso remover todos os caracteres especiais.
Por exemplo, se o valor é tio materno, então eu preciso
<code><option value="MaternalUncle">Maternal Uncle</option> </code>
O que estou recebendo é
<code><option value="Maternal Uncle">Maternal Uncle</option> </code>
Existem 2 aplicativos que podem usar essa página e qual arquivo de propriedades carregar depende do aplicativo. Se eu carregar valores para o aplicativo 1, os valores serão exibidos corretamente. O último valor no app1 é "Outros" e não possui nenhum caractere especial. Para o aplicativo 2, ele não apara os espaços em branco onde o último valor é "Tio materno". repOptions no código é ArrayList com valores carregados do arquivo de propriedades. Aqui está o meu código:
<code><select name="person" id="person"> <option value="na">Select the relationship</option> <c:forEach items="${repOptions}" var="repOption"> <option value="${fn:replace(repOption, '[^A-Za-z]','')}">${repOption}</option> </c:forEach> </select> </code>
Primeiro aplicativo remove espaços em branco como este valor é o quarto na lista de 9. Para app2, este é o último valor e regex não funciona. Se eu colocar tio materno como primeira propriedade para app2, então isso funciona bem, mas os requisitos são para ter a última opção.
<code> <option value="${fn:replace(repOption, ' ','')}"> </code>
está trabalhando para espaços em branco, mas pode haver valores como Brother / Sister, então eu preciso remover / também, por isso estou usando regex.