您好我是regex的新手,无法为此找到合适的解决方案:
我想切断两个斜杠之间的网址的最后一个参数“/ 1032 /”表格网址“http://www.blablabla.com/test.php/addpage/1032/”
我刚刚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” 现在我可以通过切片切断最后一个参数,但这不合理我猜
有更好的解决方案吗?非常感谢!
答案 0 :(得分:1)
curr_url.match(/.+(\/.+\/)$/)
[“http://www.blablabla.com/test.php/addpage/1032/”,“/ 1032 /”]
第一个贪婪的.+
捕获所有持续斜线的东西然后倒退到倒数第二个,因为其余的模式会失败。 ()捕获此斜杠之间的所有内容,最后一个结尾然后\/$
告诉该字符串应该在最后一个斜杠之后结束。如果您只需要数字本身,请在支架外移动斜杠。
虽然我误解了你的意图。如果你需要字符串的第一部分,你可以使用regexp建议稍微改变一下:
curr_url.match(/(.+)\/.+/)[1]
它捕获“一切直到斜线,然后再一些”。它将首先到达字符串中的最后一个斜杠,但然后返回到前一个斜杠,因为没有“那么多”,因此完全留下你想要的字符串部分。
答案 1 :(得分:1)
var parts=curr_url.split('/');
之后,您可以从阵列中获取任何部分。
答案 2 :(得分:1)
在你的表达中
/.*\/./
你需要最后一个点告诉模式在斜杠后面有一个字符,但这也是匹配的,因此在你的结果中。如果你删除它将匹配到最后一个斜线,所以没有解决方案。
但是有一种方法可以定义模式之后应该是什么,并且不匹配那些东西。它叫做look ahead assertion。
所以你可以做到
/.*\/(?!$)/
和(?!$)
是一个负前瞻断言,意思是“仅当字符串的结尾($
)没有跟随时才匹配前一个斜杠”。
curr_url= "http://www.blablabla.com/test.php/addpage/1032/";
expression =/.*\/(?!$)/;
alert(expression.exec(curr_url));
也会回复你想要的东西。