繁体   English   中英

查找并检测字符串中的模式

[英]Find and detect a pattern in a string

我正在寻找一个 function 来检测字符串上的重复模式,例如,如果输入是:

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";

它应该返回 true 因为有很多次重复“你好”或“你好这是一个重复的模式”

我试过这样的事情:

function detectPattern(string) {
    string = string.replace(/\s+/g,"_");
    return /(\S)(\1{15,})/g.test(string);
}

但这只会检测文本是否多次包含相同的字符。

有什么想法或建议吗?

一个可行的正则表达式如下:

^(.+?)( ?\1)+$

这将匹配:

  • ^ : 字符串的开头
  • (.+?) :最少的字符数(至少一个),其次是
  • (?\1)+ :一个可选空格和第一组的相同字符,多次
  • $ : 字符串结尾

为了提取您的重复模式,提取第 1 组的内容就足够了。

此处查看演示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM