Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex youtube正则表达式可以工作,但需要改进_Regex - Fatal编程技术网

Regex youtube正则表达式可以工作,但需要改进

Regex youtube正则表达式可以工作,但需要改进,regex,Regex,我现在有一个正则表达式,可以在纯文本youtube链接上成功运行 /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/ 所以它在这样的东西上工作-> http://www.youtube.com/watch?v=Y34jC4I1m70 但它失败的地方是检测到标签中的youtube链接 <a href='http://www.youtube.com/watch?v=Y34jC4I1m70'&g

我现在有一个正则表达式,可以在纯文本youtube链接上成功运行

 /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/
所以它在这样的东西上工作->

http://www.youtube.com/watch?v=Y34jC4I1m70
但它失败的地方是检测到标签中的youtube链接

<a href='http://www.youtube.com/watch?v=Y34jC4I1m70'>http://www.youtube.com/watch?v=Y34jC4I1m70</a>

有什么方法可以让它同时捕捉到这两个字符吗?

尝试删除前导字符。
然而,我想知道在这种情况下,.*应该起作用。但是为什么你需要一个新的。在youtube这个词的内部?

你能给我们展示一个如何使用这个正则表达式的代码示例吗?一般来说,正则表达式是一种不好的标记语言方法。使用解析器,在正确的位置查找链接。不要使用正则表达式来解析HTML。使用适当的HTML解析模块。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已编写、测试和调试的PHP模块正确解析HTML的示例,请参阅。