post[content_1537704579186][settings][code]
Нужно получать последнее слово в квадратных скобках, то есть code из строки.
Делаю так:
"post[content_1537704579186][settings][code]".match( /\[(.+?)\]/ig );
Но так я получаю три массива. Конечно я могу потом достать последний, о это не правильно. Вдруг элементов в скобках будет больше или мне нужно будет достать именно предпоследний.
/[^]*\[([^\][]*)]/
См. демо регулярного выражения. Суть его в том, что сначала находится вся строка ([^]* находит ноль и более любых символов), а затем индекс движется назад в попытке найти шаблон \[([^\][]*)]:
\[ - символ [([^\][]*) - Захватывающая группа №1: ноль и более символов, отличных от [ и ]] - символ ].JS-демо:
var text = "post[content_1537704579186][settings][code]";
var rx = /[^]*\[([^\][]*)]/;
console.log((m=text.match(rx)) ? m[1] : "");
/\[([^\][]+)](?![^]*\[[^\][]*])/
См. демо регулярного выражения.
Тут смысл в том, что после того, как движок найдёт \[([^\][]+)], шаблон (?![^]*\[[^\][]*]) (негативный блок предварительного просмотра вперёд) отменяет совпадение при нахождении ещё одной подстроки типа [...].
var text = "post[content_1537704579186][settings][code]";
var rx = /\[([^\][]+)](?![^]*\[[^\][]*])/;
console.log((m=text.match(rx)) ? m[1] : "");
Сборка персонального компьютера от Artline: умный выбор для современных пользователей