const regex = /(?<!!)\[(?=[^\]]*[a-z])([a-zA-Z_]+[\w]+)\]/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<!!)\\[(?=[^\\]]*[a-z])([a-zA-Z_]+[\\w]+)\\]', 'gm')
const str = `<?php
\$options[\$list[_capture_me]][]=array(\$list[_captureme],\$list[_capture_me]);
\$option_names[\$list[_capture_me]]=\$list[_captureme];
\$product_name=\$list[capture_me];
\$product_name=\$list[0];
\$product_name=\$list[DONTCAPTUREME];
\$product_name=\$list[CapTureMe];
\$product_name=\$list[CapTurEME];
\$actionKey = \$get[DONT_CAPTURE_ME];
if(array_key_exists(DONT_CAPTURE_ME,\$get)) {
\$actionKey = \$get[DONT_CAPTURE_ME];
if(array_key_exists(\$actionKey,\$this->arrPageActions)){
\$this->arrAllTemplatesAndAttributes[\$templateID][captureme]['Capture_Me'][\$res[option_values_id]] = \$res[DONT_CAPTURE_ME];
\$old_faq_id.="\$result[faq_id]&";
\$result['toc']="<b><a href=\$PHP_SELF#\$result[faq_id]>\$result['question']</a></b>";}
\$result['toc']="<b><a href=\$PHP_SELF#\$result[faq_id]>\$result[QUESTION]</a></b>";}
\$login_groups_id = \$check_admin[login_groups_id];
?>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
function check_input(field_name, field_size, message) {
if (\$elements[capture_me] && (form.elements[dont_capture].type != "hidden") && \$form.elements[capture_me]) {
var field_value = form.elements[dontcapure].value;
var field_value = \$form.elements[capureme].value;
if (field_value == '' || field_value.length < field_size) {
error_message = error_message + "* " + message + "\\n";
error = true;
}
}
}`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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