2

おそらく非常に単純な正規表現の問題に苦労しています。私は単純なプロトタイプに取り組んでおり、現在どのページを表示しているかを知る必要があるため、ユーザーがメニューウィジェットをクリックして同じビューに移動しても、それをリロードしません。

ユーザーが切り替えることができる2つのURLがあります。

http://localhost/TestMVC/Larry/LarryTiles

http://localhost/TestMVC/Larry/LarryTilesList

URLには、次のような末尾のクエリ文字列アイテムを含めることもできます 。http:// localhost / TestMVC / Larry / LarryTilesList?filterValue = servers

LarryTilesは私に問題を与えています。「/\bLarryTiles \ b /」は金曜日に機能しましたが(他の質問からの回答の後)、これは現在一致していません。:)

これらの2つの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 に答える