为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2022-07-21 20:59:50
我正在尝试测试一个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个赞

您可以.replacelocation.pathname第二个路径组件之后删除所有内容,然后与path变量进行比较。

此解决方案应该适合您:

path == location.pathname.replace(/^(\/dashboard\/[\w-]+)\/.*$/, '$1')

正则表达式演示.replace


查看完整回答
反对 回复 2022-07-21
?
慕村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/


查看完整回答
反对 回复 2022-07-21
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信