Url-адрес сопоставления с набором шаблонов url-адресов содержит регулярное выражение

У меня есть URL-адрес, который должен соответствовать одному из шаблонов URL-адресов из массива нескольких шаблонов URL-адресов

var URLPatternsArr = ['https://m.abc.com/collections/([^/]+)','https://m.abc.com/store/([^/]+)/','https://m.abc.com/collections/([^/]+)/item/([^/]+)']

url = 'https://m.abc.com/collections/tagline-silk-mill/item/green-embroidered-faux-georgette-salwar-anarkali-salwar-kameez--42cba667-256a-4f95-8912-62f3d03a128f'

URLPatternsArr будет содержать n номеров различных URL-адресов с регулярным выражением. Я буду повторять этот массив и проверять точное совпадение. если я использую функцию сопоставления javascript

 Object.keys(URLPatternsArr).forEach(function(el) {
     console.log("-------");
     console.log("matching with "+URLPatternsArr[el]);
        if(url.match(URLPatternsArr[el])  != null)
        {
          console.log("matched with "+URLPatternsArr[el]);
        }
      });

URL соответствует как 'https://m.abc.com/collections/([^/]+)', так и 'https://m.abc.com/collections/([^/]+)/item/([^/]+)',

Я хочу сопоставить этот URL-адрес с 'https://m.abc.com/collections/([^/]+)/item/([^/]+)', поскольку этот шаблон contians / item / между двумя регулярными выражениями и URL-адресом содержит то же самое. какой хороший способ найти совпадение этого типа в javascript или Node.js?

Оберните все ваши регулярные выражения якорями ^ и $. Например. ^PATTERN$

revo 31.10.2018 11:57
0
1
114
1

Ответы 1

Просто измените свои шаблоны, чтобы они полностью соответствовали:

var URLPatternsArr = ['^https://m.abc.com/collections/([^/]+)$','^https://m.abc.com/store/([^/]+)/$','^https://m.abc.com/collections/([^/]+)/item/([^/]+)$']

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

Bsquare ℬℬ 06.11.2018 14:23

Другие вопросы по теме