Есть строка:
"Маша едет на дорогой Lamborgini."
Решение с методом exec()
Для начала создадим класс символа, который будет описывать возможную букву русского алфавита:
[А-яЁё]
Для нахождения максимально длинной последовательности из таких классов символа мы воспользуемся квантификатором «+«, который будет находить в строке сопоставления класса символа от одного до бесконечности раз.
[А-яЁё]+
Так как стандартное сопоставление строки по шаблону регулярного выражения идёт слева-направо, то нас будет интересовать самое последнее возможное сопоставление.
Чтобы обозначить окончание строки, нужно воспользоваться утверждением, которое оформляется в виде символа доллара «$«.
Между нашим потенциальным русским словом и концом строки могут быть ДРУГИЕ символы, а могут и не быть. ДРУГИЕ символы — это все те, что нельзя назвать русскими буквами. Мы используем производство класса символа с отрицанием:
[^А-яЁё]
Теперь у нас могут быть всего 2 ситуации:
- Строка заканчивается русской буквой
- Строка НЕ заканчивается русской буквой
Оформить это условие сопоставления можно при помощи квантификатора «*«, который ищет варианты от нуля до бесконечности повторений.
[^А-яЁё]*
Мы будем использовать метод exec()
для экземпляров регулярного выражения:
/([А-яЁё]+)[^А-яЁё]*$/.exec("Маша едет на дорогой Lamborgini.")[1]
Финальный штрих в получении нужного результата — это использование атома группы, который оформляется круглыми скобками «( )«. На этот раз метод exec()
вернёт нам массив из двух целочисленных индексов. Под нулевым будет храниться общий результат сопоставления, а под первым — изолированный под задачу.
Получим:
"дорогой"
Скриншот:

Решение с методом [ @@match ]
Тот же самый результат можно получить при помощи выражения:
/([А-яЁё]+)[^А-яЁё]*$/[Symbol.match]("Маша едет на дорогой Lamborgini.")[1] "дорогой"
Скриншот:

Информационные ссылки
Стандарт ECMAScript — Раздел «CharacterClass» — https://tc39.es/ecma262/#prod-CharacterClass
Стандарт ECMAScript — Раздел «Quantifier» — https://tc39.es/ecma262/#prod-Quantifier
Стандарт ECMAScript — Раздел «22.2.5.2 RegExp.prototype.exec ( string )» — https://tc39.es/ecma262/#sec-regexp.prototype.exec