所以我在 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/