Można usunąć powtórzeń dowolnego znaku z prostych regex jak (.)\1+
Jednak to złapie legalnych zastosowań, jak również, takie jak słowa, które dwukrotnie litery w ich pisowni (balonu, pisownia, oraz itd.).
Więc, prawdopodobnie, chciałbyś ograniczyć wyrażenie do niektórych niedozwolonych znaków, zachowując je jak najbardziej ogólne, aby nie modyfikować go od czasu do czasu, ponieważ Twoi użytkownicy znajdują nowe znaki używać.
Możliwym rozwiązaniem byłoby zabronić powtarzane bez nas i nie-numeryczne znaki:
([^A-Za-z0-9])\1+
Ale nawet to nie jest ostateczne rozwiązanie wszystkich spraw, jak niektórzy użytkownicy mogą rzeczywiście decydują się korzystania z rzeczywistych sekwencji nas jako ograniczniki:
ZZZZZZZZZZZZZZZZZZZZZZ
BBBBBBBBBBBBBBBBBBBBBB
ZZZZZZZZZZZZZZZZZZZZZZ
aby nie dopuścić do tego i z dodatkową korzyścią umożliwienia zgodnego z prawem wykorzystywania pewnych powtarzających się znaków non-literowych (tak jak w wielokropkiem: ...), można ograniczyć powtórzenia znaków do maksimum 3, za pomocą wyrażenia regularnego o składni (<pattern>)\1{min, max}
w następujący sposób: (.)\1{4,}
, aby dopasować nieprawidłowe sekwencje znaków, o minimalnej długości 4 i nieokreślonym maksimum.
+1, ale użyłby '[^ a-zA-Z0-9]' zamiast '.' –