我正在努力解决可能是一个非常简单的正则表达式问题。我正在处理一个简单的原型,需要知道我在哪个页面上,所以如果用户点击菜单小部件导航到同一个视图,我就不会重新加载它。
我有两个用户可以切换的网址:
http://localhost/TestMVC/Larry/LarryTiles
http://localhost/TestMVC/Larry/LarryTilesList
URL也可以包含一些尾随的查询字符串项,如下所示: http://localhost/TestMVC/Larry/LarryTilesList?filterValue=servers
LarryTiles给了我这个问题。 " / \ bLarryTiles \ B /"周五工作(在这里得到其他问题的答案后),但现在还不匹配。 :)
我需要找到确切的字符串" LarryTiles"和" LarryTilesList"在这两个网址中,但无法弄清楚如何做到这一点。我的本地计算机与其托管的各种服务器之间的URL会发生变化,因此我无法依赖位置。
编辑:添加了一个尾随查询字符串的示例,我忘了这一点。对不起:(
答案 0 :(得分:2)
您可以像这样获取网址的最后一个路径段:
function getLastPathSegment(url) {
var match = url.match(/\/([^\/]+)\/?$/);
if (match) {
return(match[1]);
}
return("");
}
// returns "LarryTiles"
getLastPathSegment("http://localhost/TestMVC/Larry/LarryTiles");
// returns "LarryTilesList"
getLastPathSegment("http://localhost/TestMVC/Larry/LarryTilesList");
所以,你可以这样做:
var endPath = getLastPathSegment(window.location.pathname);
if (endPath == "LarryTiles") {
// some code
} else if (endPath == "LarryTilesList") {
// some code
} else {
// some code
}
答案 1 :(得分:0)
看起来像你解释的那样有用,否则试试这个:http://jsfiddle.net/Wfz9d/
您是否有案例敏感问题?
答案 2 :(得分:0)
您可以使用此代码:
str = 'http://localhost/TestMVC/Larry/LarryTiles?filterValue=servers';
if (str.match(/\/([^\/?]+)(?=\/$|\?|$)/)) {
if (match[1] == 'LarryTiles')
alert('LarryTiles found');
else if (match[1] == 'LarryTilesList')
alert('LarryTilesList found');
}