与javascript正则表达式完全匹配

时间:2012-04-05 21:41:07

标签: javascript regex

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

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

http://localhost/TestMVC/Larry/LarryTiles

http://localhost/TestMVC/Larry/LarryTilesList

URL也可以包含一些尾随的查询字符串项,如下所示: http://localhost/TestMVC/Larry/LarryTilesList?filterValue=servers

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

我需要找到确切的字符串" LarryTiles"和" LarryTilesList"在这两个网址中,但无法弄清楚如何做到这一点。我的本地计算机与其托管的各种服务器之间的URL会发生变化,因此我无法依赖位置。

编辑:添加了一个尾随查询字符串的示例,我忘了这一点。对不起:(

3 个答案:

答案 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');
}