const regex = /^data:(?:(?<mime>[^;,]+);?)?(?:;charset=(?<charset>[^;,]+);?)?(?:;(?<base64>base64);?)?,(?<content>.*)$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^data:(?:(?<mime>[^;,]+);?)?(?:;charset=(?<charset>[^;,]+);?)?(?:;(?<base64>base64);?)?,(?<content>.*)$', 'gm')
const str = `data:text/html base64,PGgxPua1i+ivlTwvaDE+
data:text/html;,PGgxPua1i+ivlTwvaDE+
data:text/html;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=big5;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=utf-16le;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=utf-16be;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=gbk;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=latin1;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=utf8;base64,PGgxPua1i+ivlTwvaDE+
data:text/plain;charset=utf8;base64,PGgxPua1i+ivlTwvaDE+
data:text/html;charset=gbk;base64,PGgxPrLiytQ8L2gxPg==
data:text/html;base64,测试
data:text/html,%E6%B5%8B%E8%AF%95
`;
const subst = `📦mime: 『$1』 📦charset: 『$2』 📦content: 『$4』 《$3》\n---------------------------------------------------------------------------------`;
// 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