如何在 javascript 中用通配符匹配字符串

How to match string with a wildcard in javascript

我正在尝试编写一个函数来检查路由是否包含在路由数组中:

const routes = ['/test', '/documentation/*']

function checkRoute(route) {
  if (routes.includes(route)) {
    console.log('Included!!')
  } else { 
    console.log('Not included!')
  }
}

我需要帮助的部分是如何处理通配符 * - 基本上,我希望包含任何具有 /docs/ 前缀的路由,例如:

/documentation/docs.json/documentation/index.html

除了进行一些非常混乱的字符串操作外,我不确定如何实现。任何帮助将不胜感激!

您可以使用正则表达式。

const routes = ['\/test\/*', '\/documentation\/*']

function checkRoute(route) {
  let regex = new RegExp(route);
  let matchedRoutes = routes.filter(route => regex.test(route))
}

这是一个简单形式的通配符匹配函数。使用它并支持所有类型的通配符比较是个不错的主意: