传递变量时匹配正则表达式

我正在尝试测试一个location.pathname. 我正在使用正则表达式传递一个函数的路径。路径可以是:


/dashboard

/dashboard/orders

并且location.pathname可以是:


/dashboard

/dashboard/orders

/dashboard/orders/5ea5c95684c28d4b7ff688e1

/dashboard/orders/anyOtherId

我想要做的是传递时,/dashboard/orders/5ea5c95684c28d4b7ff688e1因为location.pathname它只与path /dashboard/orders而不匹配/dashboard。


在https://regexr.com/中测试正则表达式我可以使它工作:\/dashboard\/*,然后我尝试在 javascript 中实现它:


const matcher = new RegExp(`${path}\/*`)

matcher.test(location.pathname)

但是,当我通过 a path = /dashboard/ordersand时,location.pathname = /dashboard/orders/5ea5c95684c28d4b7ff688e1它与/dashboardand匹配/dashboard/orders。我需要它只与/dashboard/orders. 只有当is和/dashboard时才必须匹配。path/dashboardlocation.pathname = /dashboard


我怎样才能做到这一点?


提前致谢


编辑:为了更清楚,我需要它在pathis/dashboard/orders和location.pathnameis/dashboard/orders或时返回 true /dashboard/orders/5ea5c95684c28d4b7ff688e1。


但它必须在pathis/dashboard和location.pathnameis/dashboard/orders或时返回 false/dashboard/orders/5ea5c95684c28d4b7ff688e1


呼如林
浏览 91回答 2
2回答

缥缈止盈

您可以.replace在location.pathname第二个路径组件之后删除所有内容,然后与path变量进行比较。此解决方案应该适合您:path == location.pathname.replace(/^(\/dashboard\/[\w-]+)\/.*$/, '$1')正则表达式演示.replace

慕村225694

在这里,您可以使用两种不同的正则表达式。一个正则表达式 - "\/dashboard(\/)?$"这将匹配"/dashboard"和"/dashboard/"第二个正则表达式 - "\/dashboard\/orders(\/[a-zA-Z0-9]*(\/)?)?$"这将匹配/dashboard/orders /dashboard/orders/5ea5c95684c28d4b7ff688e1 /dashboard/orders/anyOtherId /dashboard/orders/ /dashboard/orders/5ea5c95684c28d4b7ff688e1/ /dashboard/orders/anyOtherId/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript