const regex = new RegExp('\\G(?!\\A)
(?: [^\\[]+ | (?! \\[/?quote). )*+ \\K
(
\\[quote[^\\]]*\\]
(?: [^\\[]+ | (?!\\[/?quote). | (?1) )*+
\\[/quote\\]
)
| \\[quote[^\\]]*\\] \\K', 'gi')
const str = `
[quote]lol [quote=2][quote=3] a[/quote]b[/quote]c[/quote]
[quote] a [quote=bob]a[/quote] text [quote][quote]a[/quote]b[/quote]c[/quote]
`;
const subst = ``;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
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