2017-02-19 10 views
-2

Ich habe eine Zeichenfolge:Wie erreichen Sie Lookbehind Regex in Javascript?

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

Was ich brauche, zu erreichen, ist diese Zeichenfolge in ein Array aufteilen HTML-Tags und reinen Text enthalten. so etwas wie:

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

Ich habe versucht regexp zu verwenden: /(?=<)|(?<=>)/g, aber Javascript erlaubt mir nicht, Lookbehind Ausdruck zu verwenden. Irgendwelche Ideen, wie man das macht?

+0

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

+1

[analysieren Sie nicht HTML mit regex] (http://stackoverflow.com/a/1732454/5459839). – trincot

Antwort

2

Dies sollte für Sie arbeiten:

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

Danke für die Idee und die Lösung. Das Filtern durch ES6 kam mir nicht in den Sinn. Definitiv schlaue und einfache Lösung. – bigcat

+0

Ich freue mich so zu hören :) –