2012-04-05 31 views
2

おそらく非常に単純な正規表現の問題に苦しんでいます。私は簡単なプロトタイプを作成していますし、私が何ページ目にいるのかを知る必要があるので、ユーザーがメニューウィジェットをクリックして同じビューに移動するとリロードしません。javascriptの正規表現との正確な文字列の一致

私は、ユーザーが切り替えることができる2つのURLがあります。LarryTilesを与えている http://localhost/TestMVC/Larry/LarryTilesList?filterValue=servers

:URLはまた、このようないくつかの末尾にクエリ文字列の項目を、持つことができ

http://localhost/TestMVC/Larry/LarryTiles

http://localhost/TestMVC/Larry/LarryTilesList

を私は問題です。 "/ \ bLarryTiles \ b /"は金曜日に働いていましたが(他の質問からの回答後)、これは現在と一致しません。 :)

これらの2つのURLで「LarryTiles」と「LarryTilesList」の文字列を正確に見つける必要がありますが、その方法を理解できません。私のローカルマシンとそれがホストされているさまざまなサーバーとの間でURLが変更されるため、私はその位置に依存することができません。

EDIT:私は忘れてしまった末尾のクエリー文字列を使ってこの例を追加しました。あなたがこのようなURLの最後のパスセグメント取得することができます

答えて

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'); 
} 
+1

これは末尾のスラッシュに対して脆弱です。 – jfriend00

+0

同意しましたが、OPの質問のURLにスラッシュが付きません。 – anubhava

+0

最新の編集した質問に基づいて、 'trailing slash'や' query string'などのケースを扱う答えを更新しました。 – anubhava

2

申し訳ありません:(:

var endPath = getLastPathSegment(window.location.pathname); 
if (endPath == "LarryTiles") { 
    // some code 
} else if (endPath == "LarryTilesList") { 
    // some code 
} else { 
    // some code 
} 
+0

OPからの新しい情報で、window.location.pathnameを使用するように私の例を更新しました。比較の前にすべてのクエリ文字列またはハッシュタグが既に削除されています。 – jfriend00

+0

私はこれをテストしていますが、VSとChromeはどちらもあなたの正規表現にエラーがあると言います。 – dex3703

+0

@ dex3703 - はい、申し訳ありませんが、私が修正したタイプミスがありました。 – jfriend00

0

は、あなたが作品を説明するもののように思える、そうでない場合は試してみてください。そう

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"); 

を、あなたはこれを行うことができますこの:http://jsfiddle.net/Wfz9d/

あなたは大文字と小文字の区別の問題を持っていますか

+0

大文字と小文字は問題ではありませんが、使用されているURLです。 – dex3703

関連する問題