Вот кое-что, что может сработать, однако, оно сообщит вам, только если есть шаблон , повторенный три раза, и (я не думаю) не может быть расширен, чтобы сказать вам, если есть другие:
/(.+).*?\1.*?\1/
Преодолев это:
(.+) matches any 1 or more characters, starting anywhere in the string
.*? allows any length of interposing other characters (0 or more)
\1 matches whatever was captured by the (...+) parentheses
.*? 0 or more of anything
\1 the original pattern, again
Если вы хотите, чтобы повторы происходили в непосредственной близости, вместо этого используйте
/(.+)\1\1/
… как предложено @Buh Buh - нотация \1
против $1
может варьироваться в зависимости от вашей системы регулярных выражений.