我需要删除 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');
正则表达式正在使用 正则表达式交替 处理 2 条路径:
- 如果此查询参数紧跟在
?
之后,那么我们在参数之后抓取直到&
并将?
放回原位。 - 如果此查询参数在
&
之后,则&key=value
将替换为空字符串。
关于javascript - 在javascript中使用正则表达式删除查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599133/