我得到的字符串实际上是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/上无效。有什么想法吗?

最佳答案

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


这里没什么奇怪的,您的\/.[^\/]+正则表达式可以与/my/一起使用,并且不能与/m/一起使用,因为它期望第一个/之后至少有两个字符,因为.恰好匹配一个字符并且[^\/]+匹配至少一个字符,而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);

07-24 09:31