【问题标题】:How to strip arguments from url using regex如何使用正则表达式从 url 中删除参数
【发布时间】:2018-01-25 09:22:00
【问题描述】:

我想从 URL 中删除某些参数。

比如说:

给定的 url 是 www.abc.com/def.php?xyz=pqr&efg=ijk,我想删除 xyz=<value> 的所有参数,那么最终的 url 应该看起来像 www.abc.com/def.php?efg=ijk

目前,我正在对 url 进行 3 次遍历。

function(str) {
  if (str != null) return str.replace(/&?'(xyz|arg2|arg3)'=[^&#]*/g, '"'
    '"');
}

function(str) {
  if (str != null) return str.replace(/\\??&/, '"' ? '"');
}

function(str) {
  if (str != null) return str.replace(/\\?$/, '"'
    '"');
}

可以将所有 3 个正则表达式折叠成一个正则表达式吗?

【问题讨论】:

    标签: javascript regex replace filtering query-string


    【解决方案1】:

    这似乎适用于我的测试用例:

    (Javascript Pattern Demo)

    模式:/\?(?:xyz|arg2|arg3)=[^&#]*(?=$|#)|&(?:xyz|arg2|arg3)=[^&#]*|(?:xyz|arg2|arg3)=[^&#]*&/

    实际上,它说:

    1. 如果查询字符串中只有一个键值对,则仅匹配?(查询字符串的开头)。
    2. 如果可能,将前导 & 与键值对匹配。
    3. 如果不可能,匹配尾随&

    如果您有一个字符串破坏了这种模式,请告诉我,我会尝试修复它。

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2016-07-23
      • 2018-12-13
      • 2016-10-15
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多