如何使正则表达式匹配查询字符串?

时间:2017-03-22 06:45:21

标签: regex web query-string

我正在开发一个简单的路由器,我需要能够识别URL地址末尾是否有类似查询的结构。 我想出了什么:

(\?([^&=]+)=([^&=]+)&?)+$

根本行不通!它适用于第一次迭代:即xxx?foo=bar,但绝对不是两个,即xxx?foo=bar&greeting=hello将不起作用。

我做错了什么?而且:有没有更好的解决方案来实现这一目标?

1 个答案:

答案 0 :(得分:0)

您需要将前面带有问号(([^&=]+)=([^&=]+))的一个键值对(\?([^&=]+)=([^&=]+))后跟零,以匹配任意数量的键值对,每个键值对前面都有一个&符号({{ 1}}):

(?:&([^&=]+)=([^&=]+))*

演示:https://regex101.com/r/OHdRHS/1