Не могли бы вы помочь мне извлечь "женские часы" из строки:
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=
Я пытался
\/(?:.(?!\/.+\.))+$
НоЯ не знаю, как это сделать правильно.
Одним из вариантов может быть использование группы захвата для сопоставления символа слова или дефиса.Ваш матч будет в первой группе захвата.
^.*?\/([\w-]+)\.html
Соответствует:
^
.*?
\/
/
([\w-]+)
\.html
.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
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);