Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 使用switch语句和regex匹配url路径的格式?_Javascript_Regex - Fatal编程技术网

Javascript 使用switch语句和regex匹配url路径的格式?

Javascript 使用switch语句和regex匹配url路径的格式?,javascript,regex,Javascript,Regex,我试图使用带有正则表达式条件的switch语句根据“url”设置“direction”变量。我有这些示例“url”: 1) a. /meat/chicken/C/1/edit b. /meat/chicken/c/2/edit c. /meat/chicken/new 2) a. /meat/beef/B/1/edit b. /meat/beef/b/2/edit c. /meat/beef/new 肉的种类可能会有所不同 我的正则表达式条件/代码适用于以下URL:

我试图使用带有正则表达式条件的switch语句根据“url”设置“direction”变量。我有这些示例“url”:

1) a. /meat/chicken/C/1/edit
   b. /meat/chicken/c/2/edit
   c. /meat/chicken/new

2) a. /meat/beef/B/1/edit
   b. /meat/beef/b/2/edit
   c. /meat/beef/new
肉的种类可能会有所不同

我的正则表达式条件/代码适用于以下URL:

if(/[a-zA-Z]+.[a-zA-Z]+.[a-zA-Z]+.\d+.[edit]+/.test(url)){
开关(真){
case/chicken/.test(url):
方向='chicken/edit'
打破
case/beef/.test(url):
方向='牛肉/编辑';
打破
违约:
方向='编辑';
打破
}
}else如果(/[a-zA-Z]+[a-zA-Z]+.[new]+/.test(url)){
开关(真){
case/chicken/.test(url):
方向='鸡肉/新'
打破
case/beef/.test(url):
方向=‘牛肉/新’;
打破
违约:
方向='新';
打破
}
}
但是,对于我不想要的其他URL也是如此,例如:

/meat/beef/
如果“url”是“/meat/beef/”,那么当前在else-If语句“(else-If(+/[a-zA-Z]+.[a-zA-Z]+.[new]+/.test(url)){”上返回true,我不希望它为true,因为它没有单词“new”

我只希望我的if语句和switch语句与上面1)和2)的格式匹配并为真


我对正则表达式不是很熟练,还在学习switch语句。有人能帮我吗?

我想这可能更简单

const urlParts = url.split('/');
const [base, type] = urlParts;
const action = urlParts[urlParts.length - 1]; // get the last

if (base === 'meat' && (action === 'edit' || action === 'new')) {
  direction = [type, action].join('/');
}

路由LIB很难正确。我会使用一些已经存在的LIB,或者至少阅读它们以获得想法。类似的内容将是一个很好的阅读方式。

请将想要的目标添加到路径中。问题似乎不清楚。也许告诉我们应该有哪些输入outputs@NinaScholz我向尼娜道歉,我不明白你对我说的话an.我只想让1)和2)中未列出的其他路径为我当前的if和else-statement返回false。啊,好的,我明白了。
[new]
表示任何字母
n
e
,或
w
,而不是它们的组合。regex101.com对于这类东西真的很有用。@ktilcu谢谢。我学会了这一点,而不是[new],我应该使用.new$来匹配确切的单词。这是一个更简单、更可读的答案。非常感谢!