2016-08-19 9 views
-1

の最後のセグメント行き方:私は、このようなURLの最後のセグメントを抽出しようとしているURL

localhost:15043/Maintenance/ModelDetails/3?makeId=14 

と、この:

//localhost:15043/Maintenance/ModelDetails/3 

私はコードの下に使用されるが、このコードは動作しませんがこのリンクで:

localhost:15043/Maintenance/ModelDetails/3?makeId=14 

var last_segment = window.location.hash.split('/').pop(); 
+0

「14」が結果になるはずです。各状況で結果がどうあるべきかを明確に説明するために、質問をするときに時間をかけてください。この時点で、質問は非常に不明です。 –

答えて

3

これを行うには、window.locationのパス名、検索、および/またはハッシュ一部を使用することができます。このコードを実行するための例として使用されているので、ここではパーサーは無視してください。あなたの.split()方法で正規表現を使用することができます

var url = "http://localhost:15043/Maintenance/ModelDetails/3?blah=abc&makeId=14#test"; 
 
function parseUrl(url) { 
 
    var a = document.createElement("a"); 
 
    a.href = url; 
 
    return a; 
 
} 
 
var parser = parseUrl(url); 
 
var last_segment = parser.pathname.split('/').pop(); 
 
var searchParams = parser.search.substring(1).split("&"); 
 
var lastParamValue = searchParams[searchParams.length-1].split("=")[1]; 
 
var hash = parser.hash; 
 

 
console.log(last_segment); 
 
console.log(lastParamValue); 
 
console.log(hash);

+1

はい、私はすでに私の編集でそれを指摘しました。 – 10100111001

+0

私が取得したい14 –

+0

正しく出力させるには、URLにスキームを追加する必要があります。少なくともFirefoxでは、パスと検索で空白の結果が得られます。 –

2

replace()とあなたのために、この単純な正規表現.+\/動作しませんか?

var getLastSegment = function(url) { 
 
    return url.replace(/.+\//, ''); 
 
}; 
 

 
console.log(getLastSegment("localhost:15043/Maintenance/ModelDetails/3?makeId=14")); 
 

 
console.log(getLastSegment("//localhost:15043/Maintenance/ModelDetails/3"));

0

const pattern1 = /\?|\/|\&/; 
const pattern2 = /\//; 
const str = 'localhost:15043/Maintenance/ModelDetails/3?makeId=14'; 

console.log(str.split(pattern1).pop()); // return 'makeId=14' 
console.log(str.split(pattern2).pop()); // return '3?makeId=14' 

pattern1

?/&文字にURLを分割し、 pattern2のみ /文字になります。だからあなたはあなたが望むものと一致するように正規表現を調整することができます。

関連する問題