如何修正正则表达式以正确提取Wistia视频URL中的视频ID?
修正Wistia视频ID提取正则表达式
原正则的问题在于,当URL包含embed/iframe/这类多层路径时,[^;\?]+会匹配从embed之后到URL结尾的所有内容(包括/),导致捕获结果包含多余的iframe/前缀。
修正后的正则及代码
var rx = /https?:\/\/.*wistia\.(net|com|st)\/(?:medias|embed(?:\/iframe)?)\/*([^\/;\?]+)/; var _m = url.match(rx); if (_m && _m[2]) return _m[2]; else return false;
关键调整说明
- 域名匹配覆盖
wistia.net、wistia.com、wi.st三类Wistia相关域名,避免遗漏 - 针对
embed路径,通过(?:\/iframe)?兼容带iframe子路径的URL,且不占用捕获分组 - 最后捕获组
([^\/;\?]+)排除了/字符,确保只提取最后一段的视频ID,不会包含前面的路径部分
测试验证
- 输入URL:
http://fast.wistia.net/embed/iframe/26sk4lmiix,提取结果:26sk4lmiix - 输入URL:
https://support.wistia.com/medias/26sk4lmiix,提取结果:26sk4lmiix
内容的提问来源于stack exchange,提问作者Toniq
相关产品推荐
相关产品推荐

