Почему бы вам просто не разрешить буквенно-цифровые символы только ?
if (!value.toString().trim().matches("\\p{Alnum}*")) {
throw new ValidatorException(new FacesMessage("Invalid characters!"));
}
Если вы действительно хотите идти вперед в этом направлении.Чтобы проверить, содержит ли строка эти символы, используйте это:
if (value.toString().trim().matches(".*[,/'#~@\\x5B\\x5D}{+_)(*&^%$£\"!\\|<>]+.*")) {
throw new ValidatorException(new FacesMessage("Invalid characters!"));
}
Имейте в виду, что в кодировке Unicode доступно гораздо больше символов, которые вы, вероятно, также хотели бы запретить.