I'm looking for a function that detects repeated patterns on a string, for example, if the input is:
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";
it should return true as there are many times repeated "Hello" or "Hello this is a repeated pattern"
I have tried something like this:
function detectPattern(string) {
string = string.replace(/\s+/g,"_");
return /(\S)(\1{15,})/g.test(string);
}
but that will only detect if the text contains the same character many times.
Any idea or suggestion?
A regex that would work is the following:
(.*?)( ?\1)+
This will match:
(.*?): the least amount of characters, followed by( ?\1)+: an optional space and the very same characters of the first group, multiple timesIn order to extract your repeated pattern, it's sufficient to extract the content of Group 1.
Check the demo here.