web-dev-qa-db-ja.com

YouTube URLの正規表現

YouTubeのビデオの検証に次の正規表現を使用していますshare url's。

var valid = /^(http\:\/\/)?(youtube\.com|youtu\.be)+$/;
alert(valid.test(url));
return false;

次のURL形式を正規表現でサポートする必要があります。

http://youtu.be/cCnrX1w5luM  
http://youtube/cCnrX1w5luM  
www.youtube.com/cCnrX1w5luM  
youtube/cCnrX1w5luM  
youtu.be/cCnrX1w5luM   

別の正規表現を試しましたが、共有リンクに適した正規表現を取得できません。誰でも私がこれを解決するのを助けることができます。前もって感謝します。

35
Jenz
  • 正規表現にwwwがありません
  • 2番目の\.はオプションです(youtu.beyoutubeの両方が有効であるため)
  • 正規表現の+では、1つ以上のワイルドカードではなく、1つ以上の(youtube\.com|youtu\.be)を使用できます
    ワイルドカードを示すには.を使用し、1つ以上が必要なことを示すには+を使用する必要があります。

試してください:

^(https?\:\/\/)?(www\.youtube\.com|youtu\.?be)\/.+$

テスト

www.の有無にかかわらずURLと一致させたい場合は、単にオプションにします:

^(https?\:\/\/)?((www\.)?youtube\.com|youtu\.?be)\/.+$

www.youtu.be/...も一致させたい場合は、オプションのwww.を括弧の外側に置きます。

^(https?\:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$
37
Dukeling

YouTube URLの重要な部分をビデオコードと照合してキャプチャするために使用する正規表現を次に示します。

^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$

次のURLで動作します。

https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured
https://www.youtube.com/watch?v=DFYRQ_zQ-gk
http://www.youtube.com/watch?v=DFYRQ_zQ-gk
//www.youtube.com/watch?v=DFYRQ_zQ-gk
www.youtube.com/watch?v=DFYRQ_zQ-gk
https://youtube.com/watch?v=DFYRQ_zQ-gk
http://youtube.com/watch?v=DFYRQ_zQ-gk
//youtube.com/watch?v=DFYRQ_zQ-gk
youtube.com/watch?v=DFYRQ_zQ-gk

https://m.youtube.com/watch?v=DFYRQ_zQ-gk
http://m.youtube.com/watch?v=DFYRQ_zQ-gk
//m.youtube.com/watch?v=DFYRQ_zQ-gk
m.youtube.com/watch?v=DFYRQ_zQ-gk

https://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
http://www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
//www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
www.youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US
youtube.com/v/DFYRQ_zQ-gk?fs=1&hl=en_US

https://www.youtube.com/embed/DFYRQ_zQ-gk?autoplay=1
https://www.youtube.com/embed/DFYRQ_zQ-gk
http://www.youtube.com/embed/DFYRQ_zQ-gk
//www.youtube.com/embed/DFYRQ_zQ-gk
www.youtube.com/embed/DFYRQ_zQ-gk
https://youtube.com/embed/DFYRQ_zQ-gk
http://youtube.com/embed/DFYRQ_zQ-gk
//youtube.com/embed/DFYRQ_zQ-gk
youtube.com/embed/DFYRQ_zQ-gk

https://youtu.be/DFYRQ_zQ-gk?t=120
https://youtu.be/DFYRQ_zQ-gk
http://youtu.be/DFYRQ_zQ-gk
//youtu.be/DFYRQ_zQ-gk
youtu.be/DFYRQ_zQ-gk

https://www.youtube.com/HamdiKickProduction?v=DFYRQ_zQ-gk

キャプチャされたグループは次のとおりです。

  1. プロトコル
  2. サブドメイン
  3. ドメイン
  4. パス
  5. ビデオコード
  6. クエリ文字列

http://regexr.com/3dj5t

41
phuc77

YouTube動画の形式が変更されました。この正規表現はすべての場合に機能します。

^(http(s)??\:\/\/)?(www\.)?((youtube\.com\/watch\?v=)|(youtu.be\/))([a-zA-Z0-9\-_])+

テスト ここ

9
Joey Mason

私はパーティーに2年遅れていることを知っていますが、とにかく何かを書く必要があり、私がそれに投げかけることができるすべてのテストケースに適合するようです。最初の一致($ 1)を参照してIDを取得できる必要があります。 http、https、wwwおよびnon-www、youtube.com、youtu.be、/ watch?と一致しますか?および/watch.php? youtube.com(youtu.beはこれらを使用しません)で、URL文字列に他の変数がある場合でもマッチングをサポートします(?t =は時間、?list =はプレイリストなど)。

(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\-_]+)
9
xeon927

これを試して:

((http://)?)(www\.)?((youtube\.com/)|(youtu\.be)|(youtube)).+

http://regexr.com?36o7a

3
Games Brainiac

他の多くの正規表現に基づいています。これは私が持っている最高のものです:

((http(s)?:\/\/)?)(www\.)?((youtube\.com\/)|(youtu.be\/))[\S]+

テスト: http://regexr.com/3bga2

1
yusuf

私はこれを試してみましたが、私にとってはうまくいきます。

(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+)

ここで確認できます https://regex101.com/r/Kvk0nB/1

1
Akash Jain