Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从字符串中提取参数子字符串的值_Javascript_Regex - Fatal编程技术网

Javascript 从字符串中提取参数子字符串的值

Javascript 从字符串中提取参数子字符串的值,javascript,regex,Javascript,Regex,我有一个字符串的形式 p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on 我想获得javascript中p2的所有值的数组,例如,在本例中,它将是[“v21”、“v22”、“v23”] 我该怎么做?我需要使用正则表达式吗?试试这个: var string = 'p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31'; var rawP

我有一个字符串的形式

p1=v11&p1=v12&p2=v21&p2=v22&p2=v23&p3=v31 and so on
我想获得javascript中p2的所有值的数组,例如,在本例中,它将是[“v21”、“v22”、“v23”]

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

试试这个:

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
循环来解决

编辑

为了所有的憎恨者,这里有一个工作示例:

您可能想看看我编写的JavaScript函数,它模仿PHP中的
$\u GET
函数:

谷歌搜索此行的源代码:

returnMe[key] = $.parseJSON( decodeURIComponent(tmpArray[1]) );
我当前实现的问题是,任何已存储的旧密钥的值都将被覆盖。您需要做的是检查键是否已经存在,如果已经存在,请读取旧值并将其存储回数组中,然后再将新值推送到同一数组中

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

希望它能有所帮助,如果您不成功,请给我写一条评论,我会回复您。

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

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"]

尝试使用
/p2=([^&]+)/g
可能重复的
-1
的作者可以暴露自己并解释他在我的答案中发现的错误吗?^^code有效:刚刚注意到Elclans在40分钟前提出了这个正则表达式。。