如何在JavaScript中从URL获取ID?
从Microsoft Stream URL优雅提取视频ID的方法
嘿,这个需求太常见了!用简单的字符串分割确实能临时解决,但如果后面URL加了查询参数(比如?t=10)或者路径末尾多了个/,就容易出问题。下面分享几个更健壮、优雅的方法:
1. 利用URL标准解析API(首推)
几乎所有主流编程语言都内置了URL解析工具,能直接拆解URL的各个组成部分,不用自己手动处理字符串边界,适应性极强:
JavaScript示例
const url = new URL("https://web.microsoftstream.com/video/223ac74c-0a2f-4f36-b78b-a8ad8a6e3009"); // 分割路径并过滤空值,取最后一段 const videoId = url.pathname.split('/').filter(Boolean).pop(); console.log(videoId); // 输出:223ac74c-0a2f-4f36-b78b-a8ad8a6e3009
Python示例
from urllib.parse import urlparse url = "https://web.microsoftstream.com/video/223ac74c-0a2f-4f36-b78b-a8ad8a6e3009" parsed_url = urlparse(url) # 直接取路径分割后的最后一段 video_id = parsed_url.path.split('/')[-1] print(video_id)
这个方法的优势是自动兼容URL的各种变体:哪怕URL变成https://web.microsoftstream.com/video/223ac74c-0a2f-4f36-b78b-a8ad8a6e3009/?foo=bar,也能正确提取ID。
2. 正则表达式匹配(精准定位UUID)
你的视频ID是标准的UUID(8-4-4-4-12格式),可以用正则直接匹配整个UUID字符串,不管它在URL的哪个位置(只要是作为视频ID的场景):
const url = "https://web.microsoftstream.com/video/223ac74c-0a2f-4f36-b78b-a8ad8a6e3009"; // 匹配UUID的正则,忽略大小写 const uuidRegex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i; const matchResult = url.match(uuidRegex); const videoId = matchResult ? matchResult[0] : null;
这种方法精准度拉满,哪怕URL结构有小调整,只要UUID存在就能抓取到。
3. 框架专用工具(可选)
如果你的项目用了特定框架/库(比如ASP.NET、React生态的工具),可能有专门处理Microsoft Stream链接的工具类,但上面两种通用方法已经能覆盖99%的场景了。
内容的提问来源于stack exchange,提问作者bier hier
相关产品推荐
相关产品推荐

