const regex = /(?m)((?:(?:^[ \t]*)?(?:\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\/(?:[ \t]*\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/|\{)))?|\/\/(?:[^\\]|\\(?:\r?\n)?)*?(?:\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/|\{))|(?=\r?\n))|\{[\S\s]*?\}(?:[ \t]*\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/|\{)))?))+)|((?:"[^"\\]*(?:\\[\S\s][^"\\]*)*"|'[^'\\]*(?:\\[\S\s][^'\\]*)*'|(?:\r?\n(?:(?=(?:^[ \t]*)?(?:\/\*|\/\/|\{))|[^\/"'\\\r\n{]*))+|[^\/"'\\\r\n{]+)+|[\S\s][^\/"'\\\r\n{]*)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?m)((?:(?:^[ \\t]*)?(?:\\\/\\*[^*]*\\*+(?:[^\\\/*][^*]*\\*+)*\\\/(?:[ \\t]*\\r?\\n(?=[ \\t]*(?:\\r?\\n|\\\/\\*|\\\/\\\/|\\{)))?|\\\/\\\/(?:[^\\\\]|\\\\(?:\\r?\\n)?)*?(?:\\r?\\n(?=[ \\t]*(?:\\r?\\n|\\\/\\*|\\\/\\\/|\\{))|(?=\\r?\\n))|\\{[\\S\\s]*?\\}(?:[ \\t]*\\r?\\n(?=[ \\t]*(?:\\r?\\n|\\\/\\*|\\\/\\\/|\\{)))?))+)|((?:"[^"\\\\]*(?:\\\\[\\S\\s][^"\\\\]*)*"|\'[^\'\\\\]*(?:\\\\[\\S\\s][^\'\\\\]*)*\'|(?:\\r?\\n(?:(?=(?:^[ \\t]*)?(?:\\\/\\*|\\\/\\\/|\\{))|[^\\\/"\'\\\\\\r\\n{]*))+|[^\\\/"\'\\\\\\r\\n{]+)+|[\\S\\s][^\\\/"\'\\\\\\r\\n{]*)', 'g')
const str = ` int j=100;
/* comment needs to be removed*/
int c = 200;
/*
*comment needs to be removed
*/
count = count + 1;
{comment needs to be removed}
i++;`;
const subst = `$2`;
// 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