Javascript 匹配不总是在一起的特定URL参数

Javascript 匹配不总是在一起的特定URL参数,javascript,php,regex,Javascript,Php,Regex,所以,我有一个小应用程序,可以用不同的URL参数进行动态重定向。我的PHP脚本上的数组建立了一个初始顺序,如下所示: $request = array( 'extension' => 'rb', 'type' => 'blob', 'size' => '234900', 'name' => 'sdtt', 'state' => '1', 'source' => 'exa

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

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

?extension=rb&type=blob&size=234900&name=sdtt&state=1&source=example.com
但是动态部分可以向数组添加或删除键。可以添加的一个键是
expires
,它将位于URL的任何位置,因为还可以添加其他参数,这意味着我不能保证它将始终位于
source
之后,或者这将是最后一个URL参数

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

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

我的尝试是:

(type=[^&]+)(expires=[^&]+)
但是,如果存在,
expires
参数,则只会得到该参数,如果该参数不存在,则它将与任何内容都不匹配。

Add |(pipe)for'or'

下面是为“或”添加|(管道)的示例


下面是一个管道字符的示例

。。。真不敢相信。“我现在觉得自己好笨啊哈哈,谢谢你,@Himan。一个烟斗角色。。。真不敢相信。“我现在觉得自己好笨,哈哈,谢谢你,”希曼说。
(type=[^&]+)|(expires=[^&]+)