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

标签 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 个字符与其他两个字符进行比较。

最佳答案

.+? 模式会查找除换行符之外的任何一个 个或多个字符,因此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/

相关文章:

Javascript:数组和 For 循环基础知识

php - 如何将 1300 条 CSV 记录输入到 Web 表单中?

java - 如何在数字和斜杠(文件路径中的图像分辨率)上匹配 Java 正则表达式

replication - Cassandra 数据复制问题

javascript - 使用 javascript 连接 php 变量

正则表达式 - 使用 "replace"通过捕获组删除内容

regex - powershell:如何从字符串中转义所有正则表达式字符

mysql - 强大的容错 MySQL 复制

mongodb - 如何在Ubuntu 14.04.4上通过配置文件使用replicaSet启动mongoDB

javascript - Ajax 向 Controller 发送空字符串?