Puede eliminar repeticiones de cualquier carácter con una expresión regular simple como (.)\1+
Sin embargo, esto va a coger usos legítimos, tales como las palabras que se han duplicado las cartas en su ortografía (globo, ortografía, bien, etc.).
Por lo tanto, probablemente desee restringir la expresión a algunos caracteres no permitidos, después de todo, manteniéndolo lo más genérico posible, para no tener que modificarlo de vez en cuando, ya que los usuarios encuentran nuevos caracteres usar.
Una posible solución sería la de no permitir que no sean letras y no números caracteres repetidos:
([^A-Za-z0-9])\1+
Pero incluso esto no es una solución definitiva a todos los casos, ya que algunas de sus usuarios realmente pueden decidir utilizar secuencias de letras reales como delimitadores:
ZZZZZZZZZZZZZZZZZZZZZZ
BBBBBBBBBBBBBBBBBBBBBB
ZZZZZZZZZZZZZZZZZZZZZZ
con el fin de no permitir esto y con el beneficio adicional de permitir usos legítimos de algunos caracteres que no sean letras repetidas (como en una elipsis: ...), usted podría restringir las repeticiones de caracteres a un máximo de 3, usando una expresión regular con la sintaxis (<pattern>)\1{min, max}
de esta manera: (.)\1{4,}
para hacer coincidir secuencias de caracteres ofensivas, con una longitud mínima de 4 y un máximo no especificado.
1, pero me gustaría utilizar '[^ a-zA-Z0-9]' en lugar de '.' –