Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разделение строки по тегам (https://javascript.ru/forum/misc/69499-razdelenie-stroki-po-tegam.html)

sergeev26 28.06.2017 18:48

Разделение строки по тегам
 
Подскажите как в js разделить строку вида:
*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>

По тегам, чтобы на выходе получить массив тегов и подходящим к ним текстам

tag_1 - текст * примечание
tag_2 - текст: 2

Сами теги в тексте начинаются со знака звездочки, могут иметь латинские символы, цифры, знак подчеркивания _ и заканчиваются двоеточием

при этом в тексте могут могут встречаться звездочки и довоеточия

ruslan_mart 28.06.2017 19:16

var str = '*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>';

var arr = str.split(/\s*\*(?=tag_\d+)/);
arr && arr.shift();

console.log(arr);

рони 28.06.2017 19:22

sergeev26,
массив на выходе покажите?

рони 28.06.2017 19:24

Ruslan_xDD,
:lol:
var str = '*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));

sergeev26 28.06.2017 19:26

Наверное я не совсем точно выразился, вместо:
tag_1
tag_2
tag_3

могут быть любые слова на латинице, а так же они могут содержать цифры и знак подчеркивания

например:
*text: текст *html_1: <p>текст*</p> *title: заголовок: текст

рони 28.06.2017 19:31

Цитата:

Сообщение от sergeev26
могут быть любые слова на латинице

:-?
var str = '*text: текст *html_1: <p>текст*</p> *title: заголовок: текст';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));

sergeev26 28.06.2017 19:39

Цитата:

Сообщение от рони (Сообщение 456806)
:-?
var str = '*text: текст *html_1: <p>текст*</p> *title: заголовок: текст';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));

Цитата:

Сообщение от рони (Сообщение 456804)
Ruslan_xDD,
:lol:
var str = '*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));

Спасибо, то что нужно :dance:

ruslan_mart 28.06.2017 19:41

var str = '*text: текст *html_1: <p>текст*</p> *title: заголовок: текст';
 str = str.split(/\*(?=\w+:)/);
 str && str.shift();
 alert(JSON.stringify(str));

sergeev26 28.06.2017 20:12

Возможно ли сделать проверку на ошибки

к примеру, если в строке будет ошибочный пробел
* tag: text
либо
*tag : text

сейчас при такой ошибке в первом теге, он полностью удаляется

рони 28.06.2017 20:44

sergeev26,
var str = '* text : текст *html_1: <p>текст*</p> *title: заголовок: текст * tag: text *tag : text';
 str = str.split(/\*\s?(\w+)\s?:/);
 str && str.shift();
 alert(JSON.stringify(str));


Часовой пояс GMT +3, время: 00:19.