const regex = /(\([\w\s].*[\w\s]\)|\(\)) =>/gmi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(\\([\\w\\s].*[\\w\\s]\\)|\\(\\)) =>', 'gmi')
const str = `var MODULE = ((my, \$, undefined) => {
console.log('EXECUTION FROM LEGACY APP START ===>');
// if private var defined in my module, use that
// else create a private var
var _private = my._private = my._private || {},
_seal = my._seal = function seal(seal) {
if (!seal) {
return;
}
delete my._private;
delete my._seal;
console.log('SEALED');
},
_unseal = my._unseal = function unseal(unseal) {
if (!unseal) {
return;
}
my._seal = _seal;
my._private = _private;
console.log('UNSEALED');
};
var name = 'Tonny Frank';
_private.name = 'This is a private name: ' + name;
_private.reverse = function reverse(str) {
return str.split('').reverse().join('');
};
if (\$ === undefined) {
console.log('jQuery not defined');
return;
}
\$(() => {
var \$h1 = \$('.card').children('h1');
\$h1.html(_private.reverse(\$h1.html()));
});
console.log(my);
my.myMethod = () => {
console.log('MODULE myMethod Executed');
\$('.name').html('Abhisek ...');
\$('button').click(function (ev) {
ev.preventDefault();
console.log(this);
\$(this).html('Damn!');
});
};
console.log('EXECUTION FROM LEGACY APP END <===');
return my;
})(MODULE || {}, this.jQuery);
`;
const subst = `function $1`;
// 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