Javascript 将字符串解析为仅带开始标记的数组

Javascript 将字符串解析为仅带开始标记的数组,javascript,regex,arrays,Javascript,Regex,Arrays,我有一个文本区域,文本格式如下: {verse1} [Am]Bla bla bla bla[B] ... {verse2} ... {verse3} ... 我需要用纯Javascript将id解析为数组。当我只有开始符号时,我不知道如何解决这个问题 所需的输出类似于: [ {"verse1": "[Am]Bla bla bla bla[B]"}, {"verse2": "..."}, {"verse3": "..."} ] 注:“{”…}”之间的名

我有一个文本区域,文本格式如下:

{verse1}
   [Am]Bla bla bla bla[B]
   ...
{verse2}
   ...
{verse3}
   ...
我需要用纯Javascript将id解析为数组。当我只有开始符号时,我不知道如何解决这个问题

所需的输出类似于:

[
   {"verse1": "[Am]Bla bla bla bla[B]"},
   {"verse2": "..."},
   {"verse3": "..."}
]
注:“{”…}”之间的名称是用户定义的


编辑:现实生活示例:

这是一种基本的操作方法。你可以在行动中看到它。但是,它是按行分割的,因此它假定了正确的空格和格式等。这不是最好或最漂亮的方法,但它是一个完全有效的示例

我通常不会发布一个完全可以工作的版本和“完美”的代码,因为它应该让你开始,给你一个想法,而不是完全解决它

var data = (function (input) {
    'use strict';

    var lines = input.split(/\n/),
        output = {},
        currentKey;
    for (var i = 0; i < lines.length; i++) {
        var line = lines[i];
        if (line.match(/^\{\w+\}$/)) {
            currentKey = line.substr(1, line.length - 2);
            output[currentKey] = "";
        } else {
            output[currentKey] += line;
        }
    }

    return output;
})(document.getElementById('input').innerHTML);

console.log(data);
var数据=(函数(输入){
"严格使用",;
var lines=input.split(/\n/),
输出={},
当前键;
对于(变量i=0;i
你在说什么“id”?向我们显示您的期望输出。已添加期望输出。。。不需要包含部分的名称,而不是每个对象只有一个属性的对象数组,您可以创建一个对象,其中每个“{verseX}”东西都是属性。但是,只有当这些名称是唯一的时,这才有效。另外,你说的“当我只有起始符号时”是什么意思?在jsfiddle.net中创建一个实时演示,在textarea中使用更多的真实文本,同时显示你的
{verse}
语法看起来像什么,这对我来说已经足够了。我被卡住了,一看到你的代码我就有了一个惊喜。非常感谢。