如何使用{{}}解析字符串

时间:2016-12-20 03:17:35

标签: javascript regex

我有一个字符串

var str = "{{a}} {{b}} aaa";

我想用{{}}拆分字符串。所以,我的预期结果是

array = ["a", "b"]

更新

另一种情况,给出

var str1 = "{{a {{b}}}}",
    str2 = "{{{a}}}";

结果应为

var arr1 = ["b"],
    arr2 = ["a"];

2 个答案:

答案 0 :(得分:3)

一个选项是match全部,然后提取内容。

var units = [
    "{{a}} {{b}} aaa",
    "{{a {{b}}}}",
    "{{{a}}};"
];
units.forEach(function(str) {
    var matched = str.match(/{{([^}]*[^{]*)}}/g).map(function(s) {
        return s.substring(2, s.length - 2)
    });
    console.log(str, '=');
    console.log(matched);
});

答案 1 :(得分:0)

如前所述,可能没有最好的方法来涵盖每个场景,但可以使用split,如:

var str1 = "{{a}} {{b}} aaa", str2 = "{{a {{b}}}}", str3 = "{{{a}}};"

var splits = str1.split(/[^{][^.][^}]|[{}]/).filter(Boolean);
console.log(splits);

结果:

Array [ "a", "b" ]
Array [ "b" ]
Array [ "a" ]

示例:

https://jsfiddle.net/gsL46bg7