2011-05-11 12 views
5

JavaScriptの3番目のスラッシュまでのすべての文字を削除するのに問題があります。これは私の文字列です:文字列内の3番目のスラッシュまでのすべての文字を削除するにはどうすればよいですか?

http://blablab/test 

結果は次のようになります。

test 

誰が正しい解決策を知っていますか?

+1

はいつもあなたの必要性LASTスラッシュの後やサードスラッシュの後のテキストですか? –

答えて

17

の端部であるスラッシュ文字に一致し、ゼロから[\s\S]

\/手段の数に制限はありませんどこにも一致していることを意味しパスでを指定すると、文字列を/に分割し、次にpop()に分割できます。

var url = "http://blablab/test"; 
alert(url.split("/").pop()); 
//-> "test" 

は、パスの個々の部分を指定/に分割し、アイテムにアクセスするためのブラケット表記を使用するには:

var url = "http://blablab/test/page.php"; 
alert(url.split("/")[3]); 
//-> "test" 

それとも、あなたはすべて第三のスラッシュ後にしたい場合は、 split()slice()join()

var url = "http://blablab/test/page.php"; 
alert(url.split("/").slice(3).join("/")); 
//-> "test/page.php" 
+0

第4のスラッシュ、 '' pop'がある場合、これは最後のスラッシュの後にすべてを取得し、 '[3]'は3番目と4番目のスラッシュの間にすべてを得ることに注意してください。 –

+0

@George:更新されました。 –

+1

この回答はクイックレスポンスのためにありがとうございました。この回答はノービス質問のために私のソーリーを助けました;) – Frank

2
var string = 'http://blablab/test' 
string = string.replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'') 
alert(string) 

これは正規表現です。私は正規表現が/[\s\S]*\//

/は改行と一致していません.と混同しないように、正規表現[\s\S]は空白や非空白(何も)意味

の始まりです

の下に説明します(.[^\r\n]と同じです)。

*たちは

最後/は最後の項目を取得するために正規表現

+1

はテストのためのフィディルドを作成しました。http://jsfiddle.net/DSzJL/ –

+0

3つの正規表現はおそらく最も効率的なアプローチではありません。 –

+0

私は正規表現を割り当てるのが好きですが、私はこれを知っている他の答えをupvoteしました。 –

2
あなたは次のことを行うことができ、それ1つのライナーようにするに

str = str.substr(str.indexOf("/",str.indexOf("/",str.indexOf("/")+1)+1)+1); 
0

あなたは部品で文字列を分割し、第三スライスした後、すべての部分を返すためにsliceを使用するsplitを使用することができます。

var str = "http://blablab/test", 
    arr = str.split("/"); 
arr = arr.slice(3); 
console.log(arr.join("/")); // "test" 

// A longer string: 
var str = "http://blablab/test/test"; // "test/test"; 
0

あなたはこのような正規表現を使用できます。文字列のmatch方法は、あなたにマッチ全体の、この場合、入力全体では、どのキャプチャの配列(どちらかを与える

'http://blablab/test'.match(/^(?:[^/]*\/){3}(.*)$/); 
// -> ['http://blablab/test', 'test] 

をグループ(最初の取得グルー​​プが必要です))、またはnull。だから、一般的な使用のためにあなたは、配列の1番目の要素を引き出すために必要な、またはnullの一致が見つからなかった場合:

var input = 'http://blablab/test', 
    re = /^(?:[^/]*\/){3}(.*)$/, 
    match = input.match(re), 
    result = match && match[1]; // With this input, result contains "test" 
関連する問題