これは非常に簡単なはずです(答えがわかっている場合)。 この質問 から
投稿されたソリューションを試してみたい。私の質問は:
JavaScript正規表現を使用して特定のURLのパラメーター値を取得する方法は?
私が持っています:
http://www.youtube.com/watch?v=Ahg6qcgoay4
私は欲しい:
Ahg6qcgoay4
私は試した:
http://www.youtube.com/watch\\?v=(w{11})
しかし、私は吸う...
あなたはほとんどそれを持っていて、特別な正規表現文字をエスケープする必要があります:
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 による正規表現の修正。
なぜあなたは文字列を取り、それを分割しないのですか
URLの例
var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"
あなたは次のように分割することができます
var params = url.split("?")[1].split("&");
Paramsを名前と値のペアとして、文字列の配列を取得し、区切り文字として「=」を使用します。
vはクエリパラメータです。技術的には、alaの場合を考慮する必要があります。 http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk
.NETでは、System.Web.HttpUtility.ParseQueryString
を使用することをお勧めします
HttpUtility.ParseQueryString(url)["v"];
キーがコレクション内にない場合はnullを返すため、キーをチェックする必要さえありません。
テストされていませんが、これは動作するはずです:
/\?v=([a-z0-9\-]+)\&?/i
私は質問が古いものであり、すでに答えられていることを知っていますが、これも解決策になる可能性があります
\b[\w-]+$
そして、私はこれらの2つのURLをチェックしました
http://www.youtube.com/watch?v=Ahg6qcgoay4
https://www.youtube.com/watch?v=22hUHCr-Tos
すべての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回の呼び出しで使用することもできます。