You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从不同基础URL提取路径子串?现有方法返回空串求助

解决URL路径提取问题

你的代码之所以返回空字符串,核心问题出在第一个replace操作上:你用整个URL字符串作为正则匹配规则去替换原URL,这直接就把整个内容清空了,后面的replace自然得不到有效结果。

推荐方案:使用原生URL API(最可靠)

现代浏览器和Node.js都支持标准的URL对象,它能帮你轻松解析URL的各个部分,不用自己写复杂正则,还能处理各种边缘情况(比如带端口、查询参数的URL):

// 基于你的变量改写
const urlObj = new URL(renamedObj.context_page_url);
renamedObj.context_page_path = urlObj.pathname;

比如对于https://abc.example.com/bla/bla/123/bla,urlObj.pathname会直接返回/bla/bla/123/bla,完美符合你的需求。

备选方案:正则表达式(兼容旧环境)

如果因为环境限制不能使用URL对象,可以用正则匹配并移除协议和域名部分:

renamedObj.context_page_path = renamedObj.context_page_url.replace(/^https?:\/\/[^\/]+/, '');

这个正则的含义:

  • ^https?:\/\/ 匹配开头的http://或https://
  • [^\/]+ 匹配从协议结束到第一个/之间的所有字符(也就是域名部分)
  • 把这两部分整体替换为空,剩下的就是你要的路径

为什么你的原代码不行?

再回头看你的代码:

renamedObj.context_page_path = renamedObj.context_page_url.replace(new RegExp(renamedObj.context_page_url, 'g'), '').replace('https://', '').replace('http://', '');

第一个replace用整个URL作为正则,相当于把整个字符串替换成空,后面的两个replace操作都是在空字符串上执行的,结果自然还是空。

内容的提问来源于stack exchange,提问作者Ryuuks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:29:59