提取特定值并将它们连续匹配

时间:2017-07-20 17:24:56

标签: javascript arrays

我尝试从网址中提取特定值。要提取的部分是参数的一部分及其各自的值。

因为参数可能多次出现,我需要抓住所有实例及其各自的值

def interval_identification @post = session[:post] end

输出应为<a><%= @post %></a>

我尝试了以下但我需要它们以逗号分隔,而不是单独的对

&#13;
&#13;
&myparameter[123]=1&myparameter[678]=4
&#13;
&#13;
&#13;

我如何加入这些结果或指出一种更有效的方法。谢谢。

4 个答案:

答案 0 :(得分:0)

在循环中,您只需将值添加到数组中,然后在循环外打印它们(或根据需要使用它们)。

下面的代码假设您需要构建一个对数组,如果需要,您可以使用逗号连接它们(如果这是您想要的方法,还可以直接构建字符串的注释部分)。

以下是对代码进行最少更改的方法:

&#13;
&#13;
var regex1 = /&myparameter\[(.*?)\]=/g;
var regex2 = /\]=(.*?)\&/g;
var input = '&myparameter[123]=1&myparameter[678]=4&otherthings=rtz';
var match;
var y = [];
// var y = ''; // if building a string instead
do {
  match = regex1.exec(input);
  match2 = regex2.exec(input);
  if (match) {
    var x = match[1];
    var c = match2[1];
    y.push(';' + x + ';' + c);
    // or, if `y` is a string, `y += ';' + x + ';' + c;
  }
} while (match);

console.log(y.join(','));
// console.log(y); if building a string
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在一行javascript中写了Gist to get URL params as a javascript object。我不认为它会应付不止一次使用过的相同的params,这对我来说似乎很奇怪。但这可能有所帮助。

console.log( JSON.parse('{"' + decodeURI(window.location.href.replace(/^(.*\?)/, '').replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}') );

答案 2 :(得分:0)

您只需要一个capture groups的正则表达式。在每次迭代时,将字符串推入一个数组,最后将它们连接起来:

var regex = /&myparameter\[(.*?)\]=(\d+)/g;
var input = '&myparameter[123]=1&myparameter[678]=4&otherthings=rtz';
var y = [];
var match;
while ((match = regex.exec(input)) !== null) {
  y.push(';' + match[1] + ';' + match[2]);
}

var result = y.join(',');

console.log(result);

答案 3 :(得分:0)

&#13;
&#13;
var regex= new RegExp(/&myparameter\[([0-9]+)\]=([0-9]+)/,'g');
var str= '&myparameter[123]=1&myparameter[678]=4&otherthings=rtz';

var match;
var res='';
while ((match= regex.exec(str)) !== null) {  
    res+=';'+match[1]+';'+match[2]+',';
}
console.log(res);
&#13;
&#13;
&#13;