【问题标题】:matchin URL with url patterns set contains regular expression具有 url 模式集的匹配 URL 包含正则表达式
【发布时间】:2019-04-04 12:29:10
【问题描述】:

我的 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/([^/]+)' 匹配,因为此模式在两个正则表达式之间包含 /item/,并且 URL 包含相同。 在 javascript 或 Node.js 中找到这种类型匹配的好方法是什么?

【问题讨论】:

  • ^$ 锚包装所有正则表达式。例如。 ^PATTERN$

标签: javascript node.js regex url


【解决方案1】:

只需更改您的模式以完全匹配:

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

【讨论】:

  • 在 Stackoverflow 上,您可以将 up-vote 提供给人们有用的答案以感谢他们,并从所有答案中选择 correct answer 中的任何一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
相关资源
最近更新 更多