正则表达式删除路径名的第一部分

问题描述 投票:0回答:1

我得到了一个字符串,它实际上是 url 的一部分,如下所示:

/m/some/url/string

我需要删除该字符串的第一部分,例如

/m/
看起来像这样:

some/url/string

我尝试了这段代码:

var pathName = '/m/some/url/string'; 
pathName = pathName.replace(/^\/.[^\/]+\//g, ''); 
console.log(pathName);//same string here as it was

并在 regex101.com 中验证其有效。但是当我在控制台中启动此代码时,字符串保持不变。有什么想法如何修复它吗?谢谢你

EDIT_1 奇怪的是,它可以与

/my/
一起使用,但不能与
/m/
一起使用。有什么想法吗?

javascript regex string
1个回答
6
投票

奇怪的是,它可以与 /my/ 一起使用,但不能与 /m/ 一起使用。有什么想法吗?

这里没什么奇怪的,你的

\/.[^\/]+
正则表达式正在与
/my/
一起使用,而不是与
/m/
一起工作,因为它期望第一个 / 之后至少有两个字符
,因为 
.
 与一个字符完全匹配,并且 
[^\/]+
 至少匹配 1 个字符,而 
m
 是 1 个字符,这就是它不匹配的原因。

所以你需要删除正则表达式中的第一个

.

/^\/[^\/]+\//g
或者你可以像这样使用

.replace(/^\/[\w\d]+\//, '')

str = str.replace(/^\/[\w\d]+\//, '');

演示:

var str = "/m/some/url/string"; str = str.replace(/^\/[\w\d]+\//, ''); console.log(str);

© www.soinside.com 2019 - 2024. All rights reserved.