我得到的字符串实际上是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);