Javascript 使用正则表达式而不是slip方法操作URL

Javascript 使用正则表达式而不是slip方法操作URL,javascript,regex,url,split,Javascript,Regex,Url,Split,基本上,我有一个url,从结构上看是这样的: http://www.my-site.com/topic1/topic2/topic3/topic4/topic5 我想对它做两件事: 1. check the structure and validate it 2. replace both topic3 and topic4 with a new parameters called topic6 这是我目前的解决方案,但我有兴趣建立更优化的东西 if ((url.match(/\//g) ||

基本上,我有一个url,从结构上看是这样的:

http://www.my-site.com/topic1/topic2/topic3/topic4/topic5

我想对它做两件事:

1. check the structure and validate it
2. replace both topic3 and topic4 with a new parameters called topic6
这是我目前的解决方案,但我有兴趣建立更优化的东西

if ((url.match(/\//g) || []).length === 7) {
    const arr = url.split('/');
    const topic5 = arr.pop();
    arr.pop();
    arr.pop();
    arr.push('topic6', topic5);
    return arr.join('/');
}
正如你所看到的,由于我对正则表达式不是很在行,我使用了另一种看起来不太好的方法。我基本上检查字符串中的/的数量,如果是7,这意味着url的结构是好的,对于这种类型的url,我应该应用下一步。之后,我抓取url的最后一个参数并将其删除,然后删除最后两个参数,并将新参数与topic5一起添加


如果你有更好的方法,请告诉我。我认为可以通过编写更少的代码行来实现,但正如我所说的,我对正则表达式不是很熟悉。

一种方法是使用replace将最后3与/,只捕获捕获组中的最后/部分,并替换为主题6和捕获组的值

让url=http://www.my-site.com/topic1/topic2/topic3/topic4/topic5 设func=url=>{ 如果url.match/\//g | |[].length==7{ 常量arr=url.replace/?:\/[^\/]+{2}\/[^\/]+$/,m,g=>`\/topics6${g}` 返回arr } 返回url }
CONSOL.LogFuncLILF代码工作良好,没有问题,请考虑发布问题。我想唯一的问题是你没有一个大的社区。例如,这里有213778个regex关键字的追随者,而只有700.Hello。它似乎返回并且应该返回@paulalexandru,这不是你想要的吗?是的,但在你第二次编辑之前,你在评论中说:[^\/]+{2}\/[^\/]+$这也不起作用。上次更改/?:\/[^\/]+{2}\/[^\/]+$/似乎有效。Thanks@paulalexandru我在打电话,我很抱歉错过了\/