Javascript 正则表达式切断斜杠之间的最后一个参数

Javascript regular Expressions cut off last parameters between slashes

本文关键字:之间 最后一个 参数 正则表达式 Javascript      更新时间:2023-09-26

嗨,我是正则表达式的新手,找不到合适的解决方案:

我想切断两个斜杠"/1032/"表单 url "http://www.blablabla.com/test.php/addpage/1032/"之间的 url 的最后一个参数

我刚刚 http://www.blablabla.com/test.php/addpage/...虽然这部分并不重要...所以只需切断最后一个斜杠之间的参数...

我所做的是:

curr_url= "http://www.blablabla.com/test.php/addpage/1032/";
expression =/.*'/./;
alert(expression.exec(curr_url));

结果为"http://www.blablabla.com/test.php/addpage/1"现在我可以用切片切断最后一个参数,但我想这是不合理的

有什么更好的解决方案吗?多谢!

curr_url.match(/.+('/.+'/)$/)

["http://www.blablabla.com/test.php/addpage/1032/", "/1032/"]

首先贪婪.+捕获所有内容以达到最后一个斜杠,然后退回到倒数第二个斜杠,因为否则模式的其余部分将失败。() 捕获此斜杠和最后一个斜杠之间的所有内容,然后在末尾'/$告诉字符串应该在最后一个斜杠之后结束。如果只想要数字本身,请将斜杠移到括号外。

看来我误解了你的意图。如果你需要字符串的第一部分,你可以使用正则表达式建议

的下面,稍作改动:
curr_url.match(/(.+)'/.+/)[1]

它捕获"所有内容,直到斜杠,然后更多"。它将首先到达字符串中的最后一个斜杠,但随后返回到以前的斜杠,因为没有"然后更多",因此完全保留您想要的字符串部分。

var parts=curr_url.split('/');

之后,您可以从数组中获取任何部分。

在你的表达中

/.*'/./

您需要最后一个点来告诉模式在斜杠后面有一个字符,但这也是匹配的,因此在您的结果中。如果你删除它,它将匹配到最后一个斜杠,所以没有解决方案。

但是有一种方法可以定义模式之后应该是什么,并且不匹配这些东西。它被称为展望断言。

所以你可以做到

/.*'/(?!$)/

(?!$)是一个否定的前瞻断言,意思是"仅当字符串的末尾($)不跟随时才匹配前一个斜杠"。

curr_url= "http://www.blablabla.com/test.php/addpage/1032/";
expression =/.*'/(?!$)/;
alert(expression.exec(curr_url));

也会返回你想要的。