从string中提取参数子串的值

时间:2013-11-22 08:35:54

标签: javascript regex

我有一个表格

的字符串
p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on

我想在javascript中获取p2的所有值的数组,例如在这个例子中,它将是[“v21”,“v22”,“v23”]。

我该怎么办?我需要使用正则表达式吗?

3 个答案:

答案 0 :(得分:2)

您可能想看看我编写的JavaScript函数,以模仿PHP中的$_GET函数:

http://www.martinandersson.com/matooltip/js/ma_GET.js

Google此行的源代码:

returnMe[key] = $.parseJSON( decodeURIComponent(tmpArray[1]) );

我当前实现的问题是已存储的任何旧密钥都会覆盖其值。您需要做的是检查密钥是否已经存在,如果是,请在将新值推送到同一阵列之前读取旧值并将其存储在数组中。

我引用的特定行使用JQuery将值转换为JavaScript对象。如果您不想将JQuery用于此功能,则可以使用JSON.parse或其他一些第三方库。

希望它有所帮助,如果你没有成功我写评论,我会回复你。

答案 1 :(得分:0)

试试这个:

var string = 'p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31';
var rawParams = string.split('&');
var params = [];
var param = '';

for (var i in rawParams) {
    param = rawParams[i].split('=');
    if ('p2' == param[0]) {
        params.push(param[1]);
    }
}

我不建议使用RegExp,因为使用一个简单的for循环很容易解决问题。

修改
为了任何仇恨 - 这是工作示例http://jsfiddle.net/j7sY6/1/

答案 2 :(得分:0)

对于正则表达式解决方案:

var matchs = [];
var re = /p2=([^&]+)/g;
while (match = re.exec('p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31')) {
   matchs.push(match[1]);
}

<强>输出:

matches = ["v21", "v22", "v23"]