Estoy buscando hacer coincidir las siguientes cadenas para luego poder truncarlas de la cadena en JS. Por ejemplo: emparejado: me gusta eee ting pie y aaaaa bananas. emparejado: Mi nombre es John Doe y A a A a AA AAA Soy genial.
Esta es la expresión regular que tengo actualmente, pero no coincide si hay un espacio en el medio o si hay más de 3 letras consecutivas:
(.)\1\1Puedes usar
/(\S)(?:\s*\1){2,}/gi /\b(\S)(?:\s*\1){2,}/giSi necesita asegurarse de que solo comienza a hacer coincidir en el límite de la palabra, debe usar la segunda expresión regular.
Vea la demostración de JavaScript:
const text = "i like eeeting pie and aaaaa bananas. My name iIIs John Doe and A a A a AA AAA I'm cool."; const re = /(\S)(?:\s*\1){2,}/gi; document.body.innerHTML = text.replace(re, '<b>$&</b>') // Second regex demo: document.body.innerHTML += "<br/>" + text.replace(/\b(\S)(?:\s*\1){2,}/gi, '<b>$&</b>') La expresión regular tiene la i bandera insensible a mayúsculas y minúsculas y coincide
(\S) - Grupo 1: cualquier carácter que no sea un espacio en blanco(?:\s*\1){2,} - dos o más ocurrencias de\s* - cero o más espacios en blanco\1 - el valor del Grupo 1.Ver el esquema de expresiones regulares :