web-dev-qa-db-ja.com

正規表現を使用してURLからパラメーター値を抽出する

これは非常に簡単なはずです(答えがわかっている場合)。 この質問 から

投稿されたソリューションを試してみたい。私の質問は:

JavaScript正規表現を使用して特定のURLのパラメーター値を取得する方法は?

私が持っています:

http://www.youtube.com/watch?v=Ahg6qcgoay4

私は欲しい:

Ahg6qcgoay4

私は試した:

http://www.youtube.com/watch\\?v=(w{11})

しかし、私は吸う...

43
OscarRyz

あなたはほとんどそれを持っていて、特別な正規表現文字をエスケープする必要があります:

regex = /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/;

url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4';
id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'

編集:soupagain による正規表現の修正。

58
Crescent Fresh

なぜあなたは文字列を取り、それを分割しないのですか

URLの例

var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"

あなたは次のように分割することができます

var params = url.split("?")[1].split("&");

Paramsを名前と値のペアとして、文字列の配列を取得し、区切り文字として「=」を使用します。

17
moha297

vはクエリパラメータです。技術的には、alaの場合を考慮する必要があります。 http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

.NETでは、System.Web.HttpUtility.ParseQueryStringを使用することをお勧めします

HttpUtility.ParseQueryString(url)["v"];

キーがコレクション内にない場合はnullを返すため、キーをチェックする必要さえありません。

6
Ion Todirel

テストされていませんが、これは動作するはずです:

/\?v=([a-z0-9\-]+)\&?/i
5
Robert Swisher

私は質問が古いものであり、すでに答えられていることを知っていますが、これも解決策になる可能性があります

\b[\w-]+$

そして、私はこれらの2つのURLをチェックしました

http://www.youtube.com/watch?v=Ahg6qcgoay4
https://www.youtube.com/watch?v=22hUHCr-Tos

[〜#〜] demo [〜#〜]

2

すべてのURLパラメーターとURL部分を取得する個別のカスタム関数を使用します。 URLパラメータの場合(URI文字列の最後の部分である http://domain.tld/urlpart/?x = a&y = b

    function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
    }

上記の関数は、url変数で構成される配列を返します。

URLパーツまたは関数の場合、( http://domain.tld/urlpart/?x = a&y = b単純なuriスプリットを使用し、

function getUrlParams() { 
    var vars = {};
    var parts = window.location.href.split('/' );
    return parts;
}

両方を組み合わせて、ページまたはJavaScriptで1回の呼び出しで使用することもできます。

0
Cosmo Arun