0

これが私が使用するURL構造の例です(電気ビデオの時代は無視してください:))

http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50

基本的に、ビデオID、選択した開始時刻(20)、および選択した終了時刻(50)を取得し、上記のパターンに従う任意のURLから変数として保存できるようにしたいと思います。

したがって、簡単なセットアップは次のとおりです。

var url = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'

// get youtube id
function youtubeid(url) {
    var ytid = url.match(dont know);
    ytid = ytid[1];
    return ytid;
}
// get youtube start time
function youtubeStart(url) {
    var ytStart = url.match(dont know);
    ytStart=ytStart[1];
    return ytStart;
}
// get youtube end time
function youtubeEnd(url) {
    var ytEnd = url.match(dont know);
    ytEnd=ytEnd[1];
    return ytEnd;
}

あなたが私が最も驚くべき空白を埋めるのを手伝ってくれるなら。私はしばらくの間正規表現のドキュメントを見つめていましたが、ますます混乱しています。

4

5 に答える 5

0
var url = "http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50";

// get youtube id
function youtubeid(url) {
    q = url.substring(url.lastIndexOf("/")+1);
    var ytid = q.substring(q.lastIndexOf("?"), -1);
    return ytid;
}

// get youtube start time
function youtubeStart(url) {
    q = url.substring(url.lastIndexOf("/")+1);
var ytStart = q.substring(q.indexOf("&start")+7,q.indexOf("&end"));
    return ytStart;
}

// get youtube end time
function youtubeEnd(url) {
q = url.substring(url.lastIndexOf("/")+1);
var ytEnd = q.substring(q.indexOf("&end")+5);
    return ytEnd;
}

console.log(youtubeid(url));
console.log(youtubeStart(url));
console.log(youtubeEnd(url));
于 2012-07-19T23:20:09.560 に答える
0

IDを取得するには

url.match(/embed\/(.*)\?/)

URLパラメータ(開始と終了)を取得する最良の方法は、DojoでGet Querystringのようなことを行うことです。次に、以下を使用して開始と終了を取得できます。

var qs = getUrlParams();
console.log("start is " + qs.start + " and end is " + qs.end )
于 2012-07-19T22:55:03.960 に答える
0

1

/http:\/\/www\.youtube\.com\/embed\/([^?]+)/

2

/http:\/\/www\.youtube\.com\/embed\/[^?]+.*[?&]start=(\d+)(?:&|$)/

3

/http:\/\/www\.youtube\.com\/embed\/[^?]+.*[?&]end=(\d+)(?:&|$)/
于 2012-07-19T22:57:45.270 に答える
0

この他のスタックオーバーフローの回答が役立つ場合があります。以下のピーター・モーテンセンの回答を使用しました。

実際の YouTube ID を取得するには、次の正規表現を使用できます。

http:\/\/www.youtube.com\/embed\/(.{11})

その正規表現は、括弧内の値を返します。ここでテストできます:

サンプルコード:

var url = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'

// get youtube id
function youtubeid(url) {
    var ytid = url.match(/http:\/\/www.youtube.com\/embed\/(.{11})/);
    ytid = ytid[1];
    return ytid;
}
alert(youtubeid(url));

function getParameterByName(name, url) {
    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(url);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

alert(getParameterByName('start', url));
alert(getParameterByName('end', url));
于 2012-07-19T22:58:00.247 に答える
0

これは、URL が指定したものとまったく同じように見えることがわかっている場合にのみ機能します (追加のクエリ パラメーターがない、開始と終了が常にその順序である、HTTPS がないなど)。しかし、一度にすべてを取得できます。

js> str = 'http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50'      
    http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50
js> rxp = /http:\/\/www.youtube.com\/embed\/(.*)\?&start=(\d+)?&end=(\d+)?/
    /http:\/\/www.youtube.com\/embed\/(.*)\?&start=(\d+)?&end=(\d+)?/
js> result = rxp.exec(str)
    http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50,ABCumLrphFA,20,50
js> result[0]
    http://www.youtube.com/embed/ABCumLrphFA?&start=20&end=50
js> result[1]
    ABCumLrphFA
js> result[2]
    20
js> result[3]
    50

上で述べたすべての癖に対処できる正規表現を書くことは可能だと思いますが、それはかなり醜く、理解しにくくなります。とにかく - これが役立つことを願っています!

参照: JavaScript 正規表現エスケープ シーケンスおよびJavaScript 正規表現メソッド

于 2012-07-19T23:06:35.080 に答える