使用正则表达式将字符串转换为json对象

时间:2014-02-12 11:15:53

标签: javascript jquery regex

我有以下来自ajax响应的字符串。

"<option value="1000133925">Abhishek</option>
<option value="1000182033">FRESH</option>
<option value="1000390154">Testing</option>"

我有另一个相同格式的字符串,我需要比较两个字符串并删除第二个字符串中的重复值,然后将剩余的选项附加到选择。

我无法从上面的字符串创建一个json对象,它将映射为{'1000133925':'Abhishek','1000182033':'FRESH'}。请帮帮我。

3 个答案:

答案 0 :(得分:2)

尝试:

var input  = '<option value="1000133925">Abhishek</option><option value="1000182033">FRESH</option><option value="1000390154">Testing</option>';
var output = {};

$(input).each(function(){
  output[$(this).val()] = $(this).text();
});

输出:

Object {1000133925: "Abhishek", 1000182033: "FRESH", 1000390154: "Testing"}

答案 1 :(得分:1)

正则表达式解决方案:

var obj = {}, m, r = /<option value="([^"]*)">([^<]*)<\/option>/g;
while (m = r.exec(s)) obj[m[1]] = m[2];

建立

{1000133925: "Abhishek", 1000182033: "FRESH", 1000390154: "Testing"}  

答案 2 :(得分:1)

我不明白为什么你坚持使用正则表达式,当你可以使用jQuery时这样做:

var options = '<option value="1000133925">Abhishek</option><option value="1000182033">FRESH</option><option value="1000390154">Testing</option>';
$(options).filter(function(index, el){
    //put here your condition for instance I have filtered odd values
    return (!isNaN(parseInt(this.value)) && parseInt(this.value)%2);
}).appendTo("#your-select-element");