我正在尝试测试一个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
2 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
您可以.replace
在location.pathname
第二个路径组件之后删除所有内容,然后与path
变量进行比较。
此解决方案应该适合您:
path == location.pathname.replace(/^(\/dashboard\/[\w-]+)\/.*$/, '$1')
慕村225694
TA贡献1880条经验 获得超4个赞
在这里,您可以使用两种不同的正则表达式。一个正则表达式 -
"\/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/
添加回答
举报
0/150
提交
取消