Как я могу получить последнее вхождение [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)