JavaScript:拆分以逗号分隔的字符串但忽略花括号

时间:2013-03-02 14:51:56

标签: javascript regex string split

我有一个像[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]这样的字符串。我想用花括号拆分这个字符串。输出必须是,

abc,1

eee,2

fff,5,jjj

kkk,9

我需要找出没有元素的东西。对于上面的例子,没有元素是4

5 个答案:

答案 0 :(得分:1)

制作正则表达式以删除[]{}字符。

var str = "[{abc,1},{eee,2},{fff,5},{kkk,9}]";
str = str.replace(/[\[\]{}]/g, "");

工作示例:http://jsfiddle.net/72Kdd/

答案 1 :(得分:1)

var a = "[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]".slice(2, -2).split('},{');

答案 2 :(得分:0)

您可以尝试更换大括号。类似的东西:

String.replace("{").replace("}").split(",");

或者,将其转换为json对象并迭代其成员。

答案 3 :(得分:0)

这是我认为你想要的。

var str = "[{abc,1},{eee,2},{fff,5},{kkk,9}]";

Array.prototype.map.call( // for each of
    str // the string's
        .match(/\{(.*?)\}(?:,(?=\s*{)|]$)/g), // matches to a certain pattern
    function (e) {
        return e.slice(1,-2); // take the middle chars
    }
);
// Array ["abc,1", "eee,2", "fff,5", "kkk,9"]

注意:由于在检查逗号后向前看"a{bc,1}",这将从{a{bc,1}}"a{bc},1" {a{bc},1}提供(?=\s*{)

答案 4 :(得分:0)

试试这个

var x = '[{abc,1},{eee,2},{fff,5,jjj},{kkk,9}]';
var items = x.match( /\{[^{]*(?=\})/g );
for ( var i in items ) items[ i ] = items[ i ].replace( /^\{/, '' );