const regex = /(["'])(?:(?=(\\?))\2.)*?\1(*SKIP)(*F)|(\[([a-zA-Z]*)\])/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(["\'])(?:(?=(\\\\?))\\2.)*?\\1(*SKIP)(*F)|(\\[([a-zA-Z]*)\\])', 'g')
const str = `\$output = "<input name='variable[key]' has to be preserved as it is.";
\$output = 'Even this string variable[key] has to be preserved as it is.';
\$variable[key] = "WhatElse";
\$result = \$wso->RSLA("7050", \$vegalot, "600", "WFID_OK_WEB","1300", \$_POST[username]);
if (\$result[ECD] != 0) {
if (\$line=="AAAA" && in_array(substr(\$wso->lot,0,7),\$lot_aaaa_list) && \$lot[wafer][25]) {`;
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