Con suerte, uno simple, pero no puedo encontrar ningún hilo exacto en SO para esta instancia en particular:
Si tengo una cadena con varios caracteres especiales en una fila, es decir 'this-is--a---string'
, quiero eliminar todos los caracteres no alfanuméricos duplicados con expresiones regulares para que termine como 'this-is-a-string'
Lo más cercano que he encontrado es .replace(/(.)\1+/g, '$1')
pero esto elimina las letras duplicadas en lugar de solo los caracteres especiales.
En una nota al margen, si alguien sabe cómo eliminar cualquier carácter no alfanumérico del final de una cadena con expresiones regulares, ¡eso también sería muy útil!
¡Gracias por adelantado!
Dado que desea colapsar solo los caracteres no alfanuméricos repetidos, debería ser suficiente cambiar su expresión regular reemplazando el .
clase de caracteres con algo que negará el grupo alfanumérico [^a-zA-Z0-9]
.
subject = "a---------------bbbbbb6times_______@@@@@@"; var myregexp = /([^a-zA-Z0-9])\1+/mg; result = subject.replace(myregexp, "$1"); console.log(result);