Wyrażenie regularne do usuwania znaków specjalnych w znacznikach JSTL

Pracuję nad aplikacją Spring i na stronie JSPX muszę dynamicznie załadować niektóre wartości ze strony właściwości i ustawić je jako rozwijane przy użyciu tagu opcji. Muszę użyć tego samego tekstu dla wartości opcji i do wyświetlania, ale dla wartości opcji muszę usunąć wszystkie znaki specjalne.

Na przykład, jeśli wartość jest wujkiem matki, to potrzebuję

<code><option value="MaternalUncle">Maternal Uncle</option>
</code>

To, co dostaję, jest

<code><option value="Maternal Uncle">Maternal Uncle</option>
</code>

Istnieją 2 aplikacje, które mogą korzystać z tej strony, a plik właściwości do załadowania zależy od aplikacji. Jeśli załaduję wartości dla aplikacji 1, to wartości zostaną wyświetlone poprawnie, ostatnia wartość w aplikacji1 to „Inne” i nie ma żadnych znaków specjalnych. W przypadku aplikacji 2 nie przycina białych znaków, gdzie ostatnią wartością jest „wujek matczyny”. repOptions w kodzie to ArrayList z wartościami załadowanymi z pliku właściwości. Oto mój kod:

<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>

Pierwsza aplikacja usuwa białe znaki, ponieważ ta wartość jest 4. na liście 9. Dla app2 jest to ostatnia wartość, a wyrażenie regularne nie działa. Jeśli umieściłem wujka macierzyńskiego jako pierwszą właściwość dla app2, to działa to dobrze, ale wymagania mają mieć ostatnią opcję.

<code> <option value="${fn:replace(repOption, ' ','')}">
</code>

pracuje dla białych znaków, ale mogą być wartości takie jak Brother / Sister, więc muszę usunąć / również, dlatego używam wyrażenia regularnego.

questionAnswers(1)

yourAnswerToTheQuestion