我正在开发一个简单的路由器,我需要能够识别URL地址末尾是否有类似查询的结构。 我想出了什么:
(\?([^&=]+)=([^&=]+)&?)+$
根本行不通!它适用于第一次迭代:即xxx?foo=bar
,但绝对不是两个,即xxx?foo=bar&greeting=hello
将不起作用。
我做错了什么?而且:有没有更好的解决方案来实现这一目标?
答案 0 :(得分:0)
您需要将前面带有问号(([^&=]+)=([^&=]+)
)的一个键值对(\?([^&=]+)=([^&=]+)
)后跟零,以匹配任意数量的键值对,每个键值对前面都有一个&符号({{ 1}}):
(?:&([^&=]+)=([^&=]+))*