2017-02-19 2 views
-2

У меня есть строка:Как добиться регулярного выражения lookbehind в javascript?

<p>text1</p> 
<p>text2 <span class="theClass">text3</span></p> 

Что мне нужно добиться того, чтобы разделить эту строку в массив, содержащий HTML-теги и чистый текст. что-то вроде:

var array= ["<p>", "text1", "</p>", ...]; 

Я пытался использовать регулярное выражение: /(?=<)|(?<=>)/g, но Javascript не позволяет мне использовать выражение просмотра назад. Есть идеи, как это сделать?

+0

'html.match (/ <.+?> | [^ <] +/г)' – JJJ

+1

[Не разобрать HTML с регулярным выражением] (http://stackoverflow.com/a/1732454/5459839). – trincot

ответ

2

Это должно работать для вас:

const data = `<p>text1</p> 
 
<p>text2 <span class="theClass">text3</span></p>` 
 

 
const split = data => data.split(/(<.*?>)/g).filter(x => x.trim()) 
 

 
console.log(split(data))

+0

Спасибо за идею и решение. фильтрация через ES6 не перешла мне в голову. Определенно умное и простое решение. – bigcat

+0

Я рад это слышать :) –

Смежные вопросы