Maison  >  Questions et réponses  >  le corps du texte

Expression régulière de correspondance de modèles pour les séquences répétitives non consécutives

J'ai une longue chaîne dénuée de sens où chaque caractère est soit un chiffre [0-9], soit une lettre minuscule [a-z], comme indiqué ci-dessous

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

Je veux une expression régulière qui puisse correspondre à des modèles non consécutifs apparaissant plus d'une fois dans une chaîne Je veux que le résultat ressemble à ceci

La partie en gras est la partie correspondante

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

P粉563831052P粉563831052369 Il y a quelques jours431

répondre à tous(1)je répondrai

  • P粉754477325

    P粉7544773252023-09-17 09:59:12

    Expression régulière : (..+)(?=.*?(1))

    Lien de référence

    const regex = /(..+)(?=.*?())/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}`);
        });
    }

    répondre
    0
  • Annulerrépondre