You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求匹配字符串中非连续重复多次模式的正则表达式

匹配非连续重复模式的正则表达式方案

针对由数字[0-9]和小写字母[a-z]组成的长字符串(示例:0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp),以下是匹配其中非连续且出现不止一次重复模式的正则方案:

核心正则表达式

(\w{2,})(?=.*(?<!\1)\1)

正则说明

  • (\w{2,}):捕获一段由数字/小写字母组成的子串,{2,}指定子串最小长度为2(可根据需求调整为{3,}等,过滤过短的重复片段)。
  • (?=.*(?<!\1)\1):正向预查逻辑,确保当前捕获的子串\1在后续字符串中再次出现,且(?<!\1)排除了"连续重复"的情况(比如aaaa里的连续aa不会被判定为有效重复模式)。

用法示例(以JavaScript为例)

如果要提取所有符合要求的唯一重复模式:

const targetStr = "0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp";
const repeatPattern = /(\w{2,})(?=.*(?<!\1)\1)/g;
const uniqueMatches = [...new Set([...targetStr.matchAll(repeatPattern)].map(item => item[1]))];
console.log(uniqueMatches); // 输出示例中包含的重复模式,如 ['139', '94'] 等

如果要定位所有重复模式的出现位置,可调整正则为:

(\w{2,})(?=(?:(?!\1).)*\1)

配合全局匹配标记g,可以捕获每一处符合条件的模式实例。

注意事项

  • 调整{2,}中的数字可以控制匹配模式的最小长度,数值越大,匹配的重复片段越长、精准度越高。
  • 若需要包含连续重复的场景,可去掉(?<!\1)部分,简化为(\w{2,})(?=.*\1)。

内容的提问来源于stack exchange,提问作者Jalal Hejazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:46:18