匹配并非总是在一起的特定URL参数

时间:2017-10-11 21:05:54

标签: javascript php regex

所以,我有一个小应用程序,它将使用不同的URL参数进行动态重定向。我的PHP脚本上的数组建立了一个初始顺序,如下所示:

$request = array(
    'extension' => 'rb',
    'type'      => 'blob',
    'size'      => '234900',
    'name'      => 'sdtt',
    'state'     => '1',
    'source'    => 'example.com',
)

制作网址:

?extension=rb&type=blob&size=234900&name=sdtt&state=1&source=example.com

但动态部分可以添加或删除数组的键。其中一个可以添加的键是expires,它将位于URL的任何位置,因为其他参数也可以添加,这意味着我无法保证它始终位于{{1或者那将是最后一个URL参数。

我的目标是定位sourcetype=anything(例如),将它们保存到变量并将其从URL中删除(可能使用expires=anything以避免重新加载页面)。基本上是:

延长= RB&安培; pushState() =大小&234900安培;名称= sdtt&安培;状态= 1&安培;源= example.com type=blob&

我的尝试是:

&expires=1507755807

但是只有(type=[^&]+)(expires=[^&]+) 参数存在,如果它不存在,它将不匹配任何内容。

1 个答案:

答案 0 :(得分:2)

添加| (管道)用于'或'

(type=[^&]+)|(expires=[^&]+)

以下是https://regex101.com/r/rXQijo/1

的示例