2016-07-08 39 views
1

次のようになりますURLからIDを取得するための最も安全な方法は何ですか:URL文字列からIDを取得

http://www.website.abc.net/fixed/27386323 

だから私は、文字列を分割し、最後の部分を取るしようとします:

var parts = url.split("/"); 
var id = parts[parts.length - 1]; 

ユーザーがタイプの場合にも、動作します:

www.website.abc.net/fixed/27386323 

しかし、URLは(最後のスラッシュ)になる場合には、動作しないでしょう

http://www.website.abc.net/fixed/27386323/ 

正規表現は良いでしょうか?それともJQueryを使うべきですか?

+1

最後の要素が空の場合だけチェックし、代わりに第二ツー最後の要素を使用します。 – Barmar

答えて

1

ます。また.matchのための正規表現を使用することができます。

([^\/]+)\/?$ 

とグラブキャプチャグループ#1。 /?$は、この正規表現で後続のスラッシュをオプションにします。

if(url.substr(-1) === "/") { 
    url = url.substr(0, str.length - 1); 
} 

をして、IDをチェック:

RegEx Demo

+0

正しいドメインと 'fixed'パラメータも確認できますか?だからこの 'www.another-website.net/fixed/27386323'は私にエラーを与えるでしょう...そして、結果は数字でなければなりません。 – user3142695

+0

確かにこの正規表現' www \。ウェブサイト\ .abc \ .net \/fixed \ /.* \ b(\ d +)\ /?$ 'これがうまくいくかどうか教えてください。私は答えを更新することができます – anubhava

+1

ありがとうございます。それは働いている。 – user3142695

0

あなたは、単にこのように任意の最後のスラッシュをトリミングすることができます。

var parts = url.split("/"); 
var id = parts[parts.length - 1]; 
1

urlの末尾にスラッシュがあれば削除して、現在行っているのと同じ方法を使用することができます。このようにして、両方のシナリオ(スラッシュ付きまたはスラッシュなし)で動作します。

var url = 'http://www.website.abc.net/fixed/27386323/'; 
var url2 = url.replace(/\/$/, ""); // remove any trailing slash at the end 
alert(url2.split('/')[url2.split("/").length -1]); // gives the desired id 

例:https://jsfiddle.net/879moj9m/1/