JavaScript正则替换:将YouTube完整URL替换为视频ID
统一替换字符串中的YouTube URL为视频ID
嘿,我之前也碰到过这种需要统一处理混合YouTube ID和完整URL的场景,下面这个方案应该能完美解决你的问题:
首先来看你的场景示例:
var content = '{GENERICO:type="youtube",id="DluFA_AUjV8"}{GENERICO:type="youtube",id="https://youtu.be/DluFA_AUjV8"}';
这里面既有直接写视频ID的片段,也有带完整YouTube链接的片段,我们需要把后者的URL替换成对应的视频ID,让所有片段格式统一。
直接用这段代码就能实现:
// 匹配包含YouTube URL的GENERICO片段,捕获视频ID var myRegex = /{GENERICO:type="youtube",id=".*?(?:youtube\.com|youtu\.be)\/(?:embed\/|watch\?v\=)?([^\&\"\?\/]+).*?[\"&\?]}/gi; // 替换成仅带ID的格式 content = content.replace(myRegex, '{GENERICO:type="youtube",id="$1"}');
简单解释下这个正则的作用:
- 精准匹配以
{GENERICO:type="youtube",id="开头的目标片段 - 兼容常见的YouTube URL格式:
youtu.be/xxx、youtube.com/watch?v=xxx、youtube.com/embed/xxx - 通过捕获组
([^\&\"\?\/]+)提取出纯视频ID(ID本身不会包含&、"、?、/这些特殊字符) - 最后把整个匹配到的URL片段替换成只带ID的标准格式
运行这段代码后,你的content变量就会变成:
'{GENERICO:type="youtube",id="DluFA_AUjV8"}{GENERICO:type="youtube",id="DluFA_AUjV8"}'
所有片段都统一成了带视频ID的格式,完全符合需求~
内容的提问来源于stack exchange,提问作者john_black
相关产品推荐
相关产品推荐

