У меня есть 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.info("-------");
console.info("matching with "+URLPatternsArr[el]);
if (url.match(URLPatternsArr[el]) != null)
{
console.info("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?
Просто измените свои шаблоны, чтобы они полностью соответствовали:
var URLPatternsArr = ['^https://m.abc.com/collections/([^/]+)$','^https://m.abc.com/store/([^/]+)/$','^https://m.abc.com/collections/([^/]+)/item/([^/]+)$']
В Stackoverflow вы можете дать проголосовать за полезным ответам людей, чтобы поблагодарить их, и выбрать любой из ответов как правильный ответ из всех.
Оберните все ваши регулярные выражения якорями
^
и$
. Например.^PATTERN$