从字符串中检索自定义参数的值

时间:2016-04-16 10:55:52

标签: javascript jquery regex

我需要从字符串中检索自定义参数的值。

字符串示例:aaa[111] bbb[222] ccc[333] ddd[444]

我需要为参数111等获取aaa的值...

参数名称提前知道(此处:aaabbbcccddd)。

也许使用正则表达式,但我不知道如何继续。

5 个答案:

答案 0 :(得分:0)

试试这个

var output = {}; 
var str = "aaa[111] bbb[222] ccc[333] ddd[444]";
str.split(/\s+/).forEach(function(val){ 
  var key = val.substring(0, val.indexOf("[")); 
  var value = val.substring( val.indexOf("[") + 1, val.indexOf("]") ); 
  output[key] = value; 
});

document.body.innerHTML += JSON.stringify(output,0,4);

您可以使用此输出变量来获取每个参数的值。

output["aaa"]; // outputs 111

答案 1 :(得分:0)

您可以使用str.match方法。

var str = "aaa[111] bbb[222] ccc[333] ddd[444]";
var strarr=str.match(/\w+\[\w+\]/g);
var val={};
var accounting = [];
for(var i=0;i<strarr.length;i++)
{
    var val1 = strarr[i].match(/\w+(?=\[)/);
  var val2 = strarr[i].match(/\w+(?=\])/);
    val[val1] = val2
    
}

alert(JSON.stringify(val));

答案 2 :(得分:0)

String.replace函数与回调(replacer)一起使用的简单“技巧”:

var str = "aaa[111] ddd[444] bbb[222] ccc[333]",
    re = /\b(\w+?)\[(\d+?)\]/g,
    result = {};

str.replace(re, function(m, $1, $2){
    result[$1] = $2;
});

document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");        

现在,result对象包含所有需要的具有适当值的参数

答案 3 :(得分:0)

这个天真的正则表达式实现是Events.ConvertedText,它可以用来提取这样的参数:

/(\w+)\[([^\]]+)\]/g

答案 4 :(得分:0)

RegExp#exec

的另一种解决方案

&#13;
&#13;
var string='aaa[111] bbb[222] ccc[333] ddd[444]',
    pattern= /(\S+)\[(\d+)\]/g,
    result = {},
    r;

while ((r = pattern.exec(string)) != null) {
    result[r[1]] = r[2];
}

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;