我尝试从网址中提取特定值。要提取的部分是参数的一部分及其各自的值。
因为参数可能多次出现,我需要抓住所有实例及其各自的值
def interval_identification
@post = session[:post]
end
输出应为<a><%= @post %></a>
我尝试了以下但我需要它们以逗号分隔,而不是单独的对
&myparameter[123]=1&myparameter[678]=4
&#13;
我如何加入这些结果或指出一种更有效的方法。谢谢。
答案 0 :(得分:0)
在循环中,您只需将值添加到数组中,然后在循环外打印它们(或根据需要使用它们)。
下面的代码假设您需要构建一个对数组,如果需要,您可以使用逗号连接它们(如果这是您想要的方法,还可以直接构建字符串的注释部分)。
以下是对代码进行最少更改的方法:
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;
答案 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)
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;