php - 使用 JavaScript .match() 获取 YouTube ID

标签 php javascript jquery regex youtube

所以我在 PHP 中有一个可用的 preg_match,但是,在我的一生中,我无法使用 Javascript/jQuery 获得相同的函数。

这就是我目前所坚持的:

yt=$('#yt').val().match(/~^\(?:https?://\)?(?:www\.)?(?:youtube\.com|youtu\.be)(?:/)(?:watch\?v=)?([^&]+)~x/);
alert(yt[1]);

这是 PHP 中的工作函数:

$rx = "~"
."^(?:https?://)?"             // Optional protocol
."(?:www\.)?  "                // Optional subdomain
."(?:youtube\.com|youtu\.be)"  // Mandatory domain name
."(?:/)"                //mandatory bracket
."(?:watch\?v=)?"       //optional URI
."([^&]+)"           //video id as capture group 1
."~x";

$has_match = preg_match($rx, $url, $matches);

知道如何实现此功能吗?

我在 Stack 上发现了一些类似的帖子,但它们远没有这个正则表达式复杂,并且无法理解这些差异。

最佳答案

不是 100% 确定,但我认为你没有正确地转义所有内容。

yt=$('#yt').val().match("^(?:https?://)?(?:www\.)?(?:youtube\.com|youtu\.be)(?:/)(?:watch\?v=)?([^&]+)")
alert(yt[1]);

"https://www.youtube.com/watch?v=dQw4w9WgXcQ".match("^(?:https?://)?(?:www\.)?(?:youtube\.com|youtu\.be)(?:/)(?:watch\?v=)?([^&]+)");

结果

["https://www.youtube.com/watch?v=iQbS-8m3svw", "watch?v=dQw4w9WgXcQ"]

关于php - 使用 JavaScript .match() 获取 YouTube ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17666226/

相关文章:

php - updateOrCreate 在 laravel 中导致 ErrorException

PHP 在没有 ImageMagick 的情况下将 SVG 转换为 PNG

Javascript Date.getFullYear() 返回 1943 而不是 2013,为什么?

javascript - 从 onclick 按钮传递值但在 jquery 中收到错误

javascript - 使用多个可选择的选项卡

php - 检查 laravel 的 Blade 指令中是否存在变量

javascript - 最佳实践——创建具有 3 列的 Bootstrap 模板——左侧和右侧边栏

javascript - 如何使用android firebase数据库将firebase集成到webapp中?

javascript - 创建用户时收到错误请求错误请求400(Firebase)

jquery - 触发 .on() 创建的事件