Estoy buscando una función que detecte patrones repetidos en una cadena, por ejemplo, si la entrada es:
var string = "HelloHelloHelloHelloHelloHello"; var string2 = "Hello this is a repeated pattern Hello this is a repeated pattern Hello this is a repeated pattern Hello this is a repeated pattern";debería devolver verdadero ya que hay muchas veces "Hola" o "Hola, este es un patrón repetido"
He intentado algo como esto:
function detectPattern(string) { string = string.replace(/\s+/g,"_"); return /(\S)(\1{15,})/g.test(string); }pero eso solo detectará si el texto contiene el mismo carácter muchas veces.
¿Alguna idea o sugerencia?
Una expresión regular que funcionaría es la siguiente:
(.*?)( ?\1)+Esto coincidirá:
(.*?) : la menor cantidad de caracteres, seguida de( ?\1)+ : un espacio opcional y los mismos caracteres del primer grupo, varias vecesPara extraer su patrón repetido, es suficiente extraer el contenido del Grupo 1.
Consulta la demostración aquí .