【发布时间】:2012-02-16 10:12:15
【问题描述】:
我有一个 PHP 正则表达式,用于从 URL 中获取 YouTube 视频代码。
我很想将它与 JavaScript 中的客户端正则表达式相匹配。谁能告诉我如何将以下 PHP 正则表达式转换为 JavaScript?
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=embed/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $url, $matches);
非常感谢,谢谢!
【问题讨论】:
-
不可能进行直接转换,因为 JavaScript 不支持后视断言。但是,关于如何在 Stack Overflow 上使用 JS 解析 YouTube URL 已经存在大量问题。我已将此标记为可能与 Javascript regular expression for extracting Youtube video ids 重复。
-
谢谢@AndyE。我目前正在使用其中一种 JavaScript 正则表达式,但我想完全模仿 PHP 正则表达式,因为 JavaScript 版本将“预览”用户在通过 PHP 后应该看到的内容。出于这个原因,如果他们失败了,我需要他们以完全相同的方式失败。
-
在这种情况下,为什么不重新编写服务器端正则表达式,使其不使用前瞻/后瞻断言?
-
最终的解决方案是两者都使用:
/.*(?:youtu.be\/|v\/|e\/|u\/\w\/|embed\/|\?v=|\&v=)([^#\&\?]*).*/Stema 确实在他的回答中提供了一些很好的见解,所以我接受了。
标签: php javascript regex youtube