Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递变量时匹配正则表达式_Javascript_Regex - Fatal编程技术网

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

Javascript 传递变量时匹配正则表达式,javascript,regex,Javascript,Regex,我正在尝试测试位置.pathname。我用正则表达式传递一个函数的路径。路径可以是: /dashboard /dashboard/orders 和位置。路径名可以是: /dashboard /dashboard/orders /dashboard/orders/5ea5c95684c28d4b7ff688e1 /dashboard/orders/anyOtherId 我要做的是将/dashboard/orders/5ea5c95684c28d4b7ff688e1作为位置传递。pathname

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

/dashboard
/dashboard/orders
位置。路径名可以是:

/dashboard
/dashboard/orders
/dashboard/orders/5ea5c95684c28d4b7ff688e1
/dashboard/orders/anyOtherId
我要做的是将
/dashboard/orders/5ea5c95684c28d4b7ff688e1
作为
位置传递。pathname
仅与
路径匹配,而与
/dashboard/orders
不匹配

在中测试Regex可以让它工作:
\/dashboard\/*
,然后我尝试在javascript中实现它:

const matcher = new RegExp(`${path}\/*`)
matcher.test(location.pathname)
但是,当我传递一个
路径=/dashboard/orders
位置。路径名=/dashboard/orders/5ea5c95684c28d4b7ff688e1
时,它与
/dashboard
/dashboard/orders
匹配。我需要它只与
/dashboard/orders
匹配<代码>/dashboard
必须仅在
路径
/dashboard
位置时匹配。路径名=/dashboard

我怎样才能做到这一点

提前谢谢

编辑:为了更清楚,我需要在
路径
/dashboard/orders
位置时返回true。路径名
/dashboard/orders
/dashboard/orders/5ea5c95684c28d4b7ff688e1


但是,当路径
/dashboard
和位置
时,必须返回false。路径名
/dashboard/orders
/dashboard/orders/5ea5c95684c28d4b7ff688e1

在这里,您可以使用两个不同的正则表达式。 一个正则表达式-

 "\/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/
您可以在
位置上执行
。替换
。pathname
以删除第二路径组件之后的所有内容,只需与
路径
变量进行比较即可

此解决方案适用于您:

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

surley您的模式应该是
\/dashboard\/orders\/*
?为什么首先需要正则表达式?我真的不知道用例到底是什么。我会在每个斜线处拆分路径名,并使用
string.startsWith(substring[,position])使用arrayOr测试
ref:@anubhava这在
位置时有效。路径名是
/dashboard/orders/5ea5c95684c28d4b7ff688e1
,但当它只是
/dashboard/orders
时,它与
路径匹配
/dashboard
就像一个魔咒@anubhava。请用这个答案回答问题,这样我就可以标记为答案。谢谢