Как проверить, содержит ли сообщение комбинированный символ?

Пример: ก ิิิิิิิิิิิิิิิิิิิิ < → ้้้้้้้้้้้้้้้้้้้้ rs00 > ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ ก ็็็็็็็็็็็็็็็็็็็็ ก ิิิิิิิิิิิิิิิิิิิิ ก ้้้้้้้้้้้้้้้้้้้้ (или любой текст "zalgo" )

Я не смог полностью выяснить, как это проверить. Я делаю своего рода антиспам, и я не вижу необходимости сохранять их, поскольку они могут отставать от пользователей и обычно спама.

То, что я пытаюсь сделать, это

if (getMessage().getRawContent().contains(combined character).delete();

Если кто-нибудь знает простой способ проверить комбинированные символы, пожалуйста, напишите!

Если вы смущены тем, что я прошу, я могу объяснить это дальше и показать больше примеров, если это необходимо.

Ответы

Ответ 1

Существует множество случаев, когда один или два последовательных комбинирующих символа являются вполне допустимым текстом. Я бы поискал четыре или более из них:

if (getMessage().getRawContent().matches(".*\\p{Mn}{4}.*"))