Heim  >  Fragen und Antworten  >  Hauptteil

Regulärer Mustervergleichsausdruck für nicht aufeinanderfolgende, sich wiederholende Sequenzen

Ich habe eine lange, bedeutungslose Zeichenfolge, in der jedes Zeichen entweder eine Zahl [0-9] oder ein Kleinbuchstabe [a-z] ist, wie unten gezeigt

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

Ich möchte einen regulären Ausdruck, der nicht aufeinanderfolgende Muster abgleichen kann, die mehr als einmal in einer Zeichenfolge vorkommen Ich möchte, dass die Ausgabe so aussieht

Der fett gedruckte Teil ist der passende Teil

"0z8b816ne139z1b948bjk50f9498t139gjj90t7tb3509w6h0r7tbp"

P粉563831052P粉563831052369 Tage vor432

Antworte allen(1)Ich werde antworten

  • P粉754477325

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

    正则表达式:(..+)(?=.*?(\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}`);
        });
    }

    Antwort
    0
  • StornierenAntwort