const regex = /\[([A-G][#b]?(maj|m)?[27]?(add|aug|dim|sus)?[2-9]?)\]/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('\\[([A-G][#b]?(maj|m)?[27]?(add|aug|dim|sus)?[2-9]?)\\]', 'g')
const str = `[Am7], [C6]
[C7]
[Cmaj7]
[C]
[Fadd9]
[C7sus4]
[Csus4], [Fsus2]
[A7]
[Edim]
[A9], [Em6]
[Dbdim]
[Eb9]
[Gdim]
[A7sus4]
[C9], [Gm6]
[Em7], [G6]
[Bb6], [Gm7]
[G7]
[G7sus4]
[Gmaj7]
[Dsus4], [Gsus2]
[Gm]
[G]
[Csus2], [Gsus4]
[Ebadd9]
[Eb]
[Ebaug], [Gaug]
[Cm]
[Em9]
[Cadd9]
[Abaug], [Caug], [Eaug]
[Fm]
[Amaj7]
[Dbm6], [Gb9]
[Dbm7]
[Bbm7], [Db6]
[Db7]
[Db]
[Gbadd9]
[Gbsus2]
[E7]
[Bb7]
[Abdim], [Fdim]
[Fm6]
[Gbm9]
[Bm6], [E9]
[Emaj7]
[Dbm9]
[Bb7sus4]
[Db9]
[Ab6], [Fm7]
[Dbadd9]
[Abm7], [B6]
[Ab7]
[Ab7sus4]
[Abmaj7]
[Absus2]
[Absus4]
[E]
[Eadd9]
[Am]
[Am9]
[F]
[Am6]
[A]
[Aadd9], [Bm9]
[Dbaug], [Faug]
[Aaug]
[A6], [Gbm]
[Gbm6]
[Asus4], [Dsus2]
[Dm]
[Dm6], [G9]
[Dm7], [F6]
[D]
[Bm7], [D6]
[D7]
[Dmaj7]
[Gm9]
[D7sus4]
[F7]
[Ebdim]
[B7]
[Adim], [Gbdim]
[Cm6], [F9]
[Fmaj7]
[B7sus4]
[D9]
[Gbm7]
[Bbsus2], [Fsus4]
[Bbdim]
[Bbm]
[Bbm9]
[Gb]
[Bbm6]
[Bbmaj7]
[Bb]
[Bbadd9]
[Bbaug], [Daug], [Gbaug]
[Bb9]
[Bbsus4]
[Ebm]
[Ab9], [Ebm6]
[Ebm7], [Gb6]
[Cm7], [Eb6]
[Eb7]
[Abadd9]
[Ebsus2]
[Gb7]
[Bsus2], [Gbsus4]
[Bdim]
[Bm]
[Bmaj7]
[B]
[Badd9]
[Baug]
[Abm]
[Bsus4], [Esus2]
[E6]`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions