Javascript регулярное выражение, чтобы всегда найти совпадение с конца? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть строка, которая выглядит следующим образом:

str = "hey there = pola"

Теперь мне нужно проверить, есть ли знак равенства = и первое слово слева от него. Вот что я делаю

str.match(/\w+(?= *=)/)[0]

Итак, я получаю желаемый результат

Но скажем, у меня есть такая строка

str = "hey there= pola so = boba"

Теперь у меня два = приметы. Но приведенное выше регулярное выражение даст мне результат только для первого знака =.

Существует ли какое-либо регулярное выражение, которое всегда может искать первый экземпляр = с конца строки?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

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

\w+(?= *=[^=]*$)

По частям:

  • \w+
  • (?= Позитивный прогноз
    • *= Совпадение 0+ вхождений пробела, за которым следует =
  • [^=]* Совпадение 0+ вхождений = (используйте [^=\r\n]*, чтобы не пересекать разрывы строк)
  • $ Конец строки
  • ) Закрыть взгляд вперед

Regex demo

const regex = /\w+(?= *=[^=]*$)/;
const str = `hey there= pola so = boba`;
console.log(str.match(regex)[0]);

Без предварительного просмотра вы можете использовать группу захвата:

^.*\b(\w+) *=[^=]*$

Regex demo

const regex = /^.*\b(\w+) *=[^=]*$/m;
const str = `hey there= pola so = boba`;
console.log(str.match(regex)[1]);
0 голосов
/ 28 апреля 2020

Я не очень разбираюсь в регулярных выражениях, но для вас, я думаю, сплит и поп должны работать

let str = "hey there= pola so = boba";
let endres = str.split('=').pop(); // gives the last element in the split array

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...