2

我正在努力解决可能是一个非常简单的正则表达式问题。我正在开发一个简单的原型,并且需要知道我在哪个页面上,因此如果用户单击菜单小部件以导航到同一视图,我不会重新加载它。

我有两个用户可以切换的 URL:

http://localhost/TestMVC/Larry/LarryTiles

http://localhost/TestMVC/Larry/LarryTilesList

URL 还可以有一些尾随查询字符串项,例如: http://localhost/TestMVC/Larry/LarryTilesList?filterValue=servers

LarryTiles 给了我这个问题。"/\bLarryTiles\b/" 周五工作(在这里其他问题的答案之后),但现在不匹配。:)

我需要在这两个 URL 中准确找到字符串“LarryTiles”和“LarryTilesList”,但不知道该怎么做。我的本地计算机和托管它的各种服务器之间的 URL 会发生变化,所以我不能依赖位置。

编辑:添加了带有尾随查询字符串的示例,我忘记了。对不起 :(

4

3 回答 3

2

您可以像这样获取 URL 的最后一个路径段:

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
}
于 2012-04-05T21:48:35.767 回答
0

似乎你解释的工作,否则试试这个:http: //jsfiddle.net/Wfz9d/

您有区分大小写的问题吗?

于 2012-04-05T21:48:43.343 回答
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');
}
于 2012-04-05T21:50:56.423 回答