2017-01-12 13 views
0

Ich habe einen Satz, das Attribut enthält: "hey how <span target="">you</span>"regex/split Satz

Ich mag würde 'hey', 'how', '<span target="">you</span>' in einem Array setzen.

benutzte ich string.split(' ') und bekam ['hey','how','<span','target="">you</span>']

Ist es möglich, alle Wörter zu spalten und zugleich die Regex verwenden, um die Worte zu fangen, die mit < beginnen und enden mit >?

Danke

+0

Parsing HTML mit regex ist [gefährliches Gebiet] (http: // stackoverflo w.com/a/1732454/382456), warum brauchst du das? – Scott

+0

Ich habe einen Satz: "Hallo, wie geht es dir" (Beispiel) und ich muss jedes Wort in einem Array extrahieren und manchmal gibt es einige HTML-Tags ... Was schlagen Sie vor, wenn es nicht angemessen ist? – Seabon

Antwort

1

Wenn Ebene von verschachtelten HTML-Tags null ist, dann würde dies helfen:

console.log('hey how <span target="">you</span>'.match(/(?!<)\S+|<(\w+)\b[^]*?\/\1>/g));

0

Dies sollte den Trick tun, aber wie @ Scott regex erwähnte nicht der geeignete Weg seines html abhängig von Ihren Daten zu verarbeiten.

const regex = /\<.+?>.*?\<.+?>|\S+/g; 
 
const str = `hey how <span target="">you</span>`; 
 

 
console.log(str.match(regex));

+0

Danke! Was schlagen Sie vor, wenn es nicht angemessen ist? – Seabon

0

ich sagen würde html mit Regex nicht analysieren. Mit jquery oder Javascript-Funktionen ist viel einfacher und sicherer.

Denn

<div id="sentence"> 
    hey how <span target="">you</span> 
<div> 

etwas auf den Linien von

$("#sentence").text() // JQuery 

oder

document.getElementById("sentence").innerText // Javascript 

beides tun Sie geben -> hey, wie Sie