我正在使用以下正则表达式验证YouTube视频分享网址。
var valid = /^(http\:\/\/)?(youtube\.com|youtu\.be)+$/;
alert(valid.test(url));
return false;
我希望正则表达式支持以下网址格式:
http://youtu.be/cCnrX1w5luM
http://youtube/cCnrX1w5luM
www.youtube.com/cCnrX1w5luM
youtube/cCnrX1w5luM
youtu.be/cCnrX1w5luM
我尝试了不同的正则表达式,但我找不到合适的共享链接。任何人都可以帮我解决这个问题。提前谢谢。
答案 0 :(得分:37)
www
\.
应该是可选的(因为youtu.be
和youtube
都有效)+
允许(youtube\.com|youtu\.be)
中的一个或多个,而不是一个或多个外卡
您需要使用.
来表示外卡,并+
表示您需要一个或多个外卡。尝试:
^(https?\:\/\/)?(www\.youtube\.com|youtu\.?be)\/.+$
如果您希望匹配带或不带www.
的网址,请将其设为可选:
^(https?\:\/\/)?((www\.)?youtube\.com|youtu\.?be)\/.+$
如果您希望www.youtu.be/...
也匹配,请将可选的www.
放在括号外:
^(https?\:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$
答案 1 :(得分:37)
这是我使用的正则表达式,用于匹配和捕获YouTube视频代码的重要位:
^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$
使用以下网址:
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
捕获的群组是:
答案 2 :(得分:9)
我知道我在派对上已经晚了2年,但我还是需要写一些内容,而且似乎适合我可以投入的所有测试案例。应该能够引用第一个匹配($ 1)来获取ID。匹配http,https,www和非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\-_]+)
答案 3 :(得分:9)
YouTube视频的格式已更改。这个正则表达式适用于所有情况:
^(http(s)??\:\/\/)?(www\.)?((youtube\.com\/watch\?v=)|(youtu.be\/))([a-zA-Z0-9\-_])+
测试here。
答案 4 :(得分:3)
答案 5 :(得分:1)
基于其他许多正则表达式;这是我得到的最好的:
((http(s)?:\/\/)?)(www\.)?((youtube\.com\/)|(youtu.be\/))[\S]+
答案 6 :(得分:1)
我试过这个,它对我来说很好。
(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+)
您可以在此处查看https://regex101.com/r/Kvk0nB/1
答案 7 :(得分:1)
我从这里获取了一个答案,并添加了对我在数据集中注意到的一些边缘情况的支持。这应该适用于几乎所有有效的网址。
^(?:https?:)?(?:\/\/)?(?:youtu\.be\/|(?:www\.|m\.)?youtube\.com\/(?:watch|v|embed)(?:\.php)?(?:\?.*v=|\/))([a-zA-Z0-9\_-]{7,15})(?:[\?&][a-zA-Z0-9\_-]+=[a-zA-Z0-9\_-]+)*(?:[&\/\#].*)?$
答案 8 :(得分:0)
^((http|https)\:\/\/)?(www\.youtube\.com|youtu\.?be)\/((watch\?v=)?([a-zA-Z0-9]{11}))(&.*)*$
https://www.youtube.com/watch?v=YPz9zqakRbk
https://www.youtube.com/watch?v=YPz9zqakRbk&t=11
http://youtu.be/cCnrX1w5luM&y=12
http://youtube/cCnrXswsluM
youtube/cCnrX1w5luM
答案 9 :(得分:-1)
我用这个
/^https?:\/\/www.youtube.com\/((\watch\?)|embed\/)(.*)?v=[a-zA-Z0-9-_]{11}(.*)?$/
答案 10 :(得分:-5)
请改为检查此模式:
r'(?i)(http.//|https.//)*[A-Za-z0-9._%+-]+\.\w+'