Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2017, 18:48
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

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

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

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

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

при этом в тексте могут могут встречаться звездочки и довоеточия
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2017, 19:16
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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);
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2017, 19:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

sergeev26,
массив на выходе покажите?
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2017, 19:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Ruslan_xDD,

var str = '*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2017, 19:26
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

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

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

например:
*text: текст *html_1: <p>текст*</p> *title: заголовок: текст
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2017, 19:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

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

var str = '*text: текст *html_1: <p>текст*</p> *title: заголовок: текст';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2017, 19:39
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

Сообщение от рони Посмотреть сообщение

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

var str = '*tag_1: текст * примечание *tag_2: текст: 2 *tag_3: <p>test </p>';
 str = str.split(/\*(\w+):/);
 str && str.shift();
 alert(JSON.stringify(str));
Спасибо, то что нужно
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2017, 19:41
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var str = '*text: текст *html_1: <p>текст*</p> *title: заголовок: текст';
 str = str.split(/\*(?=\w+:)/);
 str && str.shift();
 alert(JSON.stringify(str));
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2017, 20:12
Новичок на форуме
Отправить личное сообщение для sergeev26 Посмотреть профиль Найти все сообщения от sergeev26
 
Регистрация: 28.06.2017
Сообщений: 7

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

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

сейчас при такой ошибке в первом теге, он полностью удаляется
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2017, 20:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

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));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект String. Проверка, является ли последним символом строки точка supat Общие вопросы Javascript 2 24.04.2016 10:54
Скрипт не работает на добавленные строки Гробовщик jQuery 2 20.02.2015 13:18
Считать строки в таблице игнорируя вложенные Гробовщик jQuery 4 17.12.2013 09:49
Разделение строки по последнему повторяющемуся символу ansi_str Общие вопросы Javascript 3 27.04.2012 23:27
Для события onCLick получить индекс строки и объект грида. progi2007 ExtJS 4 05.08.2009 11:31