javascript - 如何使用正则表达式从 url 中删除参数

标签 javascript regex replace filtering query-string

我想从 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 Pattern Demo )

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

实际上,它说:

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

如果您有打破此模式的字符串,请告诉我,我会尽力修复它。

关于javascript - 如何使用正则表达式从 url 中删除参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439394/

相关文章:

javascript - knockout 双向绑定(bind)到对象

javascript - FCM Web - 相同的前台和后台通知(在前台重用后台通知)

regex - 使用 Powershell 替换 INI 文件中的整行

javascript - 返回 JS 数组中最大的电话号码

javascript - NodeJS : Deep copy a function

javascript - 为什么语义 ui 在 Angular ng-include 部分中隐藏内容?

regex - grep - 匹配文件中带有前导空格的路径

.net - 在正则表达式匹配中替换

Java REGEX,从字符串中删除两种不同类型的注释

replace - 如何使用一种 saltstack 状态对同一文件进行多次替换?