Как я могу получить последнее вхождение [0] с помощью регулярного выражения?

Я пытаюсь получить последнее возникновение ситуации.

obj.foo[0].bar[0].name

Я пытаюсь этот код, но только что получил первый [0] и если я положу $ в конце просто не работает.

\[(\d+)\](?:(?!\[\d+\]))

2 ответа

Решение

Вы должны утверждать, что другая такая же группа не может быть где-то после матча, а не только сразу после. Смотрите эту модификацию:

\[(\d+)\](?!.*?\[\d+\])
            ^^^

Или вы можете переключиться на возвратный подход:

.*\[(\d+)\]

Вот демонстрация регулярных выражений для первого регулярного выражения, и вот одна для другого.

В зависимости от того, хотите ли вы включить скобки, вы можете использовать следующее:

var r = s.match(/\[\d+\]/g)[1]

Если вам не нужны разделители, вы можете выделить их из индекса группы.

var r = s.match(/\[\d+\]/g)[1].slice(1,-1)
Другие вопросы по тегам