Как получить последнее вхождение с помощью регулярного выражения Javascript? - PullRequest
0 голосов
/ 15 декабря 2018

Не могли бы вы помочь мне извлечь "женские часы" из строки:

https://www.aliexpress.com/category/200214036/women-watches.html?spm=2114.search0103.0.0.160b628cMC1npI&site=glo&SortType=total_tranpro_desc&g=y&needQuery=n&shipFromCountry=cn&tag=

Я пытался

\/(?:.(?!\/.+\.))+$

НоЯ не знаю, как это сделать правильно.

1 Ответ

0 голосов
/ 15 декабря 2018

Одним из вариантов может быть использование группы захвата для сопоставления символа слова или дефиса.Ваш матч будет в первой группе захвата.

^.*?\/([\w-]+)\.html

Соответствует:

  • ^ Начало строки
  • .*? Соответствует любому символу, кроме новой строки без жадности
  • \/ Соответствует /
  • ([\w-]+) Захват группы для совпадения 1+ раз с символом дефиса
  • \.html Match .html

Regex demo

const regex = /^.*?\/([\w-]+)\.html/;
const str = `https://www.aliexpress.com/category/200214036/women-watches.html?spm=2114.search0103.0.0.160b628cMC1npI&site=glo&SortType=total_tranpro_desc&g=y&needQuery=n&shipFromCountry=cn&tag=`;
console.log(str.match(regex)[1]);

Другим вариантом сопоставления с последним появлением прямой косой черты может быть сопоставление прямой косой черты и использование отрицательного взгляда вперед, чтобы проверить, не осталось ли после следующих косых черт.Затем используйте группу захвата, чтобы найти не точку:

\/(?!.*\/)([^.]+)\.html

Regex demo

const regex = /\/(?!.*\/)([^.]+)\.html/;
const str = `https://www.aliexpress.com/category/200214036/women-watches.html?spm=2114.search0103.0.0.160b628cMC1npI&site=glo&SortType=total_tranpro_desc&g=y&needQuery=n&shipFromCountry=cn&tag=`;
console.log(str.match(regex)[1]);

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

const str = `https://www.aliexpress.com/category/200214036/women-watches.html?spm=2114.search0103.0.0.160b628cMC1npI&site=glo&SortType=total_tranpro_desc&g=y&needQuery=n&shipFromCountry=cn&tag=`;
let elm = document.createElement("a");
elm.href = str;
let part = elm.pathname.split('/').pop().split('.')[0];
console.log(part);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...