我想找到任何重复的字符串。我有以下代码:
let match: Object;
let repetition: ?string;
while ((match = /(.+?)\1+/g.exec(string)) !== null && repetition === null) {
repetition = match[1];
}
它在“weabcabcjy”中找到“abc”复制,但也在“all”中找到“ll”。我希望使用正则表达式将复制的最小长度限制为 2 个字符。这意味着它总是至少将 2 个字符与其他两个字符进行比较。
最佳答案
.+?
模式会查找除换行符之外的任何一个 个或多个字符,因此ll
in all
将被匹配,因为第一个 l
将被捕获到组 1 中,第二个将与 \1+
匹配。
要仅查找 2 个以上字符 block 的重复,您可以使用惰性限制量词 {2,}?
:
/(.{2,}?)\1+/g
参见the regex demo .
(.{2,}?)\1+
模式将匹配除换行符号之外的任何两个或多个字符(但尽可能少)并将其捕获到组 1 中,然后是 1 或更多相同的连续子串。
关于javascript - 正则表达式 - 最小长度的字符串重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40736948/