javascript - 带有 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/([^/]+)'
and匹配'https://m.abc.com/collections/([^/]+)/item/([^/]+)'
,
我想将此 URL 与此模式匹配,'https://m.abc.com/collections/([^/]+)/item/([^/]+)'
因为此模式在两个正则表达式之间包含 /item/,并且 URL 包含相同。在 javascript 或 Node.js 中找到这种类型匹配的好方法是什么?
解决方案
只需更改您的模式以完全匹配:
var URLPatternsArr = ['^https://m.abc.com/collections/([^/]+)$','^https://m.abc.com/store/([^/]+)/$','^https://m.abc.com/collections/([^/]+)/item/([^/]+)$']