通过正则表达式允许多个URI参数

时间:2016-01-20 19:43:16

标签: php regex

我与我想达到的目标非常接近。

我有这个:

'/create-group/([A-Za-z0-9\-\_]+)(?:/([A-Za-z0-9\-\_]+))?(?:(\?|&)(groupid|copyofgroup|ref)=([A-Za-z0-9\-\_]+))?'

它允许我限制输入和访问的URI,例如:

/create-group/123/456?groupid=789

在正则表达式的最后一位,我允许3个参数(groupid,copyofgroup和ref)。

这一切都很好,但我无法找到让preg_match验证这3个参数的无限数量的方法。现在,我只限于一个参数实例。

我希望我的preg_match()接受:

/create-group/123/456?groupid=789&ref=101112&copyofgroup=789

我尝试了*+之类的乘数,但无济于事。

谢谢!

2 个答案:

答案 0 :(得分:1)

您最后可以添加{0,3}而不是“?”:

  

/创建组/([A-ZA-Z0-9 -_] +):((/([A-ZA-Z0-9 -_] +)):???(\ |&安培)(GROUPID | copyofgroup | REF)=([A-ZA-Z0-9 -_] +)){0,3}

我在这里试过: https://regex101.com/

答案 1 :(得分:0)

找到解决方案:

'/create-group/([A-Za-z0-9\-\_]+)(?:/([A-Za-z0-9\-\_]+))?(?:((\?|&)(groupid|copyofgroup|ref)=([A-Za-z0-9\-\_]+))+)?'