如何使用正则表达式从URL中剥离参数

时间:2018-01-25 09:22:01

标签: javascript regex replace filtering query-string

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

比如说:

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

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

&#13;
&#13;
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(/\\?$/, '"'
    '"');
}
&#13;
&#13;
&#13;

是否可以将所有3个正则表达式合并为一个正则表达式?

1 个答案:

答案 0 :(得分:1)

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

Javascript Pattern Demo

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

实际上,它说:

  1. 如果查询字符串中只有一个键值对,则仅匹配?(查询字符串的开头)。
  2. 如果可能,将前导&与键值对匹配。
  3. 如果不可能,请匹配尾随&
  4. 如果你有一个打破这种模式的字符串,请告诉我,我会尝试修复它。