JavaScript中提取指定URL内com/后的中间ID的可行方法
提取URL中的ID:多种实现方式
当然可以仅用substring和indexOf实现ID提取,同时也有多种其他常用方法,以下是具体实现:
方法1:使用substring + indexOf
通过定位两个斜杠的位置来截取中间的ID:
const url = "https://state.velon.com/11eb35c9-3c69-e7f2-a4eb-0ac9483cdf87/reports/corporate"; // 跳过协议部分的斜杠,找到域名后的第一个斜杠 const firstSlash = url.indexOf('/', 8); // 找到ID后的下一个斜杠 const secondSlash = url.indexOf('/', firstSlash + 1); // 截取两个斜杠之间的内容 const id = url.substring(firstSlash + 1, secondSlash); console.log(id); // 输出:11eb35c9-3c69-e7f2-a4eb-0ac9483cdf87
方法2:使用split分割URL
将URL按斜杠分割成数组,直接取对应位置的元素:
const url = "https://state.velon.com/11eb35c9-3c69-e7f2-a4eb-0ac9483cdf87/reports/corporate"; const urlParts = url.split('/'); // 分割后的数组为 ["https:", "", "state.velon.com", "目标ID", "reports", "corporate"] const id = urlParts[3]; console.log(id);
方法3:使用正则表达式
匹配URL中符合格式的ID部分,适合URL结构有变化的场景:
const url = "https://state.velon.com/11eb35c9-3c69-e7f2-a4eb-0ac9483cdf87/reports/corporate"; // 匹配域名后斜杠与下一个斜杠之间的内容 const idRegex = /https:\/\/state\.velon\.com\/([^\/]+)\//; const matchResult = url.match(idRegex); const id = matchResult ? matchResult[1] : ''; console.log(id); // 如果ID是标准UUID格式,也可以直接匹配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 uuidMatch = url.match(uuidRegex); const uuidId = uuidMatch ? uuidMatch[0] : ''; console.log(uuidId);
方法4:使用URL对象(浏览器/Node.js环境)
利用原生URL API解析路径,再分割提取:
const url = "https://state.velon.com/11eb35c9-3c69-e7f2-a4eb-0ac9483cdf87/reports/corporate"; const urlObj = new URL(url); // 分割路径并过滤空字符串 const pathParts = urlObj.pathname.split('/').filter(part => part); const id = pathParts[0]; console.log(id);
内容的提问来源于stack exchange,提问作者oneirion
相关产品推荐
相关产品推荐

