我有一个表格
的字符串p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on
我想在javascript中获取p2的所有值的数组,例如在这个例子中,它将是[“v21”,“v22”,“v23”]。
我该怎么办?我需要使用正则表达式吗?
答案 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"]