正则表达式 - 最小长度的字符串重复

时间:2016-11-22 08:25:42

标签: javascript regex replication string-length

我想找到任何字符串重复。我有以下代码:

let match: Object;
let repetition: ?string;
while ((match = /(.+?)\1+/g.exec(string)) !== null && repetition === null) {
  repetition = match[1];
}

它在'weabcabcjy'中找到'abc'复制,但它也在'all'中找到'll'。我想有正则表达式将最小复制长度限制为2个字符。这意味着它总是最少2个字符与其他2个字符进行比较。

1 个答案:

答案 0 :(得分:2)

.+?模式会找到除换行符之外的任何一个或更多字符,因此ll中的all将从第一个l开始匹配}将被捕获到第1组,第二个将与\1+匹配。

要查找重复的2个以上字符块,您可以使用惰性限制量词{2,}?

/(.{2,}?)\1+/g

请参阅the regex demo

(.{2,}?)\1+模式将匹配并捕获到组1中的任意两个或更多,但尽可能少,除了换行符号之外的字符,然后是一个或多个相同的连续子串。