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

如何在URL包含指定路径时用正则替换URL路径的最后部分?

解决方案

直接使用带条件匹配的正则表达式,结合捕获组实现需求:

function redactUrl(url) {
  return url.replace(/(\/ice\/flag\/.*?)\/[^\/?#]*(?=[?#]|$)/, '$1/redacted');
}

正则逻辑说明

  • (\/ice\/flag\/.*?): 捕获包含/ice/flag/的路径前缀,.*?采用非贪婪匹配,确保后续能定位到路径的最后一段
  • \/[^\/?#]*: 匹配需要替换的目标路径段——从/开始,直到遇到?(查询参数)、#(哈希)或者URL结尾的部分
  • (?=[?#]|$): 正向预查,确保匹配的是路径的最后一段,不会误替换中间的路径部分

测试验证

针对给出的所有场景,执行结果如下:

  • 输入:https://test.com/plants/ice/flag/237468372912873 → 输出:https://test.com/plants/ice/flag/redacted
  • 输入:https://test.com/plants/extra/ice/flag/237468372912873 → 输出:https://test.com/plants/extra/ice/flag/redacted
  • 输入:https://test.com/plants/ice/flag/extra/237468372912873 → 输出:https://test.com/plants/ice/flag/extra/redacted
  • 输入:https://test.com/plants/ice/flag/extra/extra/237468372912873 → 输出:https://test.com/plants/ice/flag/extra/extra/redacted
  • 输入:https://test.com/plants/ice/flag/extra/237468372912873?paramOne=1&paramTwo=2#someHash → 输出:https://test.com/plants/ice/flag/extra/redacted?paramOne=1&paramTwo=2#someHash

对于不含/ice/flag/的URL(如https://test.com/plants/not_ice/flag/237468372912873),正则不会匹配,URL保持原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:25:27