非连续重复序列的模式匹配正则表达式
P粉563831052
P粉563831052 2023-09-16 20:48:28
[JavaScript讨论组]

我有一个很长的无意义字符串,其中每个字符都是数字[0-9]或小写字母[a-z],如下所示

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

我想要一个正则表达式,可以匹配字符串中出现超过一次的非连续模式 我希望输出结果如下所示

粗体部分是匹配的部分

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

P粉563831052
P粉563831052

全部回复(1)
P粉754477325

正则表达式:(..+)(?=.*?(\1))

参考链接

const regex = /(..+)(?=.*?(\1))/gm;

// 使用RegExp构造函数的替代语法
// const regex = new RegExp('(..+)(?=.*?(\\1))', 'gm')

const str = `0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp
`;
let m;

while ((m = regex.exec(str)) !== null) {
    // 避免零宽匹配导致无限循环
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // 可以通过`m`变量访问结果
    m.forEach((match, groupIndex) => {
        console.log(`找到匹配,第${groupIndex}组:${match}`);
    });
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号