Поиск последнего вхождения в строке Jquery

128
12 января 2019, 09:40
post[content_1537704579186][settings][code]

Нужно получать последнее слово в квадратных скобках, то есть code из строки.

Делаю так:

"post[content_1537704579186][settings][code]".match( /\[(.+?)\]/ig );

Но так я получаю три массива. Конечно я могу потом достать последний, о это не правильно. Вдруг элементов в скобках будет больше или мне нужно будет достать именно предпоследний.

Answer 1
Вариант 1
/[^]*\[([^\][]*)]/

См. демо регулярного выражения. Суть его в том, что сначала находится вся строка ([^]* находит ноль и более любых символов), а затем индекс движется назад в попытке найти шаблон \[([^\][]*)]:

  • \[ - символ [
  • ([^\][]*) - Захватывающая группа №1: ноль и более символов, отличных от [ и ]
  • ] - символ ].

JS-демо:

var text = "post[content_1537704579186][settings][code]"; 
var rx = /[^]*\[([^\][]*)]/; 
console.log((m=text.match(rx)) ? m[1] : "");

Вариант 2
/\[([^\][]+)](?![^]*\[[^\][]*])/

См. демо регулярного выражения.

Тут смысл в том, что после того, как движок найдёт \[([^\][]+)], шаблон (?![^]*\[[^\][]*]) (негативный блок предварительного просмотра вперёд) отменяет совпадение при нахождении ещё одной подстроки типа [...].

var text = "post[content_1537704579186][settings][code]"; 
var rx = /\[([^\][]+)](?![^]*\[[^\][]*])/; 
console.log((m=text.match(rx)) ? m[1] : "");

READ ALSO
Калькулятор с select

Калькулятор с select

Вопрос: как вычислять по выбранному селекту?

134
Как подключить jquery плагин galereya?

Как подключить jquery плагин galereya?

Нужна помощь, хочу на сайте для галереи с фотографиями использовать этот плагинАльтернатив не нашел и хочу использовать именно его

150
Не правильная работа animate jquery

Не правильная работа animate jquery

Существует проблема анимирования объектаУ объекта изменяется его ширина с помощью

123
Разница между 2-мя датами

Разница между 2-мя датами

Как я могу получить разницу между 2 датами в формате MM/dd/yyyy HH:mm:ss?

146