javascript - 在javascript中使用正则表达式删除查询字符串

标签 javascript regex

我需要删除 REST API 调用附带的查询参数。以下是需要考虑的示例 URL。在每个 URL 中,我们需要删除“key”参数及其值。

  • /test/v1?key=keyval¶m1=value1¶m2=value2
  • /test/v1?key=keyval
  • /test/v1?param1=value1&key=keyval
  • /test/v1?param1=value1&key=keyval¶m2=value2

去掉key参数后,最终的URL应该是这样的。

  • /test/v1?param1=value1¶m2=value2
  • /测试/v1?
  • /test/v1?param1=value1
  • /test/v1?param1=value1=¶m2=value2

我们使用下面的正则表达式在 php 中匹配和替换这个查询字符串。 ( https://regex101.com/r/pK0dX3/1 )

(?<=[?&;])key=.*?($|[&;])

我们不能在 java 脚本中使用相同的正则表达式。一旦我们在 java 脚本中使用它,它就会出现一些语法错误。你能帮我们找出同一个正则表达式的问题吗?我们如何更改此正则表达式以匹配和删除上述查询参数?

最佳答案

显然 Javascript 不支持 lookbehind,因此您的正则表达式将无法工作。

在 Javascript 中你可以这样使用:

repl = input.replace(/(\?)key=[^&]*(?:&|$)|&key=[^&]*/gmi, '$1');

RegEx Demo

正则表达式正在使用 正则表达式交替 处理 2 条路径:

  1. 如果此查询参数紧跟在 ? 之后,那么我们在参数之后抓取直到 & 并将 ? 放回原位。
  2. 如果此查询参数在 & 之后,则 &key=value 将替换为空字符串。

关于javascript - 在javascript中使用正则表达式删除查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599133/

相关文章:

python - Python 3中带有re.sub的lambda函数

javascript - JS 中判断值是否有效的正则表达式返回 null

JavaScript 正则表达式 : replace this or that word (have or not whitespaces between words)

node.js - 使用正则表达式搜索时 redis 高响应时间

javascript - 同步两个 HTTP 请求

javascript - JavaScript 中的静态方法?

javascript - html 中的展开折叠表不起作用

javascript - 对如何处理这个感到困惑(编写一个函数,返回一个字符串)

javascript - 下划线模板不起作用

python - 使用 Python 在非常大的文件中查找字节序列