如何使用正则表达式从 url 中删除参数
How to strip arguments from url using regex
我想从 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 个正则表达式合并为一个正则表达式?
这似乎适用于我的测试用例:
模式:/\?(?:xyz|arg2|arg3)=[^&#]*(?=$|#)|&(?:xyz|arg2|arg3)=[^&#]*|(?:xyz|arg2|arg3)=[^&#]*&/
实际上,它表示:
- 如果查询字符串中只有一对键值对,则只匹配
?
(查询字符串的开头)。
- 如果可能,将前导
&
与键值对匹配。
- 如果不可能,则匹配尾随
&
如果您有一个字符串打破了这种模式,请告诉我,我会尽力修复它。
我想从 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 个正则表达式合并为一个正则表达式?
这似乎适用于我的测试用例:
模式:/\?(?:xyz|arg2|arg3)=[^&#]*(?=$|#)|&(?:xyz|arg2|arg3)=[^&#]*|(?:xyz|arg2|arg3)=[^&#]*&/
实际上,它表示:
- 如果查询字符串中只有一对键值对,则只匹配
?
(查询字符串的开头)。 - 如果可能,将前导
&
与键值对匹配。 - 如果不可能,则匹配尾随
&
如果您有一个字符串打破了这种模式,请告诉我,我会尽力修复它。