Я пытаюсь получить строковый ввод, подобный этому:
{p}This is a paragraph{/p} {img}(path/to/image) {p}Another paragraph{/p}
Чтобы вернуть массив объектов, подобных этому
[
{"txt" : "This is a paragraph" },
{"img" : "path/to/image"},
{"txt" : "Another paragraph"}
]
Мне нужно, чтобы массив был проиндексированв порядке их нахождения - т.е. в приведенном выше примере первый абзац получает индекс 0, изображение получает индекс 1 и так далее.
Я могу получить отличные строки с помощью приведенного ниже кода, но я не уверен, как изменить его так, чтобы он проходил по всей строке и собирал объект.Так что любые указатели были бы очень благодарны
var p = /{p}(.*){\/p}/gmi;
var i = /{img}\((.*)\)/gmi;
var test = "{p} This is a paragraph {/p} {img}(text)";
function returnJson(test) {
var ps = p.exec(test);
var im = i.exec(test)
var arr = [];
if (ps.length > 1) {
arr.push({"txt" : ps[1]})
}
if (im.length > 1) {
arr.push({"img" : im[1]})
}
return arr;
}
Я думал о выполнении рекурсивной функции, где я заменяю найденные совпадения на строку.Но тогда я не уверен, как получить массив в том порядке, в котором они были найдены.Любые советы с благодарностью.