Regex 改进这个正则表达式来考虑YouTube ID与DASH(-)
如何改进此正则表达式以适应包含Regex 改进这个正则表达式来考虑YouTube ID与DASH(-),regex,Regex,如何改进此正则表达式以适应包含-的youtube ID? 我测试了我在其他线程中发现的几个正则表达式,但他们没有考虑id中的- youtube链接有时会非常复杂 $url = 'http://www.youtube.com/watch?v=iol0B-clFFM"; //valid youtube link $pattern = "/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/
-
的youtube ID?
我测试了我在其他线程中发现的几个正则表达式,但他们没有考虑id中的-
youtube链接有时会非常复杂
$url = 'http://www.youtube.com/watch?v=iol0B-clFFM"; //valid youtube link
$pattern = "/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^\"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+/";
preg_match($pattern,$url,$matches);
echo $matches[0];
$url='1!'http://www.youtube.com/watch?v=iol0B-clFFM;//有效的youtube链接
$pattern=“/(?您的模式有效,但您可以将其缩短:
$pattern = '~(?<=[vi][=/]|youtu\.be/|embed/)[a-z0-9-]+~i';
$pattern='~(?对我有效?看这里真的!?好吧,这太奇怪了,我已经试过很多次了。让我再检查一下。感谢您的确认。请注意,\u
也是youtube链接的有效字符。只需使用[\w\d-]
如果您的口味支持的话。Youtube ID基本上是base64编码的二进制数字,带有-
和
,而不是+
和/
可能的重复