Heim > Fragen und Antworten > Hauptteil
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粉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}`); }); }