@Gravio

Получить значения из строки?

Требуется достать значения между тэгами.
Например:

[m1]Галифакс ([i]город в Канаде[/i])[/m]


На выходе нужно получить m: Галифакс, i: город в Канаде

[m1][p]г.[/p] Хадалык ([i]Синьцзян-Уйгурский[c] авт.[/c] р-н, КНР[/i])[/m]


Второй пример: m: Хадалык, p: г., i: Синьцзян-Уйгурский р-н, КНР, c: авт

Знаю что нужно использовать регулярные выражение. Я делал для каждого тэга вот так: /\[i\]([^]+)\[\/i\]/g /\[c\]([^]+)\[\/c\]/g

Как это все дело правильно реализовать, может в npm есть что-то полезное
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
@StockholmSyndrome
используйте jsdom

пример использования:
const {JSDOM} = require('jsdom');


const group = (str) => {
  const {document} = new JSDOM(str.replace(/(\[|\])/g, (_, s) => ({
    '[': '<', 
    ']': '>'
  })[s])).window;
  
  return [...document.body.querySelectorAll('*')].reduce((acc, elem) => {
    acc[elem.tagName] = [...elem.childNodes].reduce((str, elem) => {
      return str + (elem.nodeType === document.TEXT_NODE ? elem.textContent : '');
    }, '');
    return acc;
  }, {});
};


console.log(group('[m]Галифакс ([i]город в Канаде[/i])[/m]'));
console.log(group('[m][p]г.[/p] Хадалык ([i]Синьцзян-Уйгурский[c] авт.[/c] р-н, КНР[/i])[/m]'));
Ответ написан
Комментировать
saintbyte
@saintbyte
Django developer
npm install htmlparser2
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы