2017-06-13 5 views
0

Diese RegexDeal mit Leerzeichen in diesem regex

var reg = <font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*)<\/font> 

wird in ersetzen (reg, '') entfernen leer Font-Tags verwendet. Es entfernt diese

<font size="3"></font> 

in Ordnung.

Wie kann ich es ändern, so dass es

<font size="3"> </font> 

oder

<font size="3">&nbsp;</font> 

oder

<font size="3"> </font> 

ich in der Lage sein, alle leeren Font-Tags mit einer beliebigen Anzahl entfernen wird finden Leerzeichen zwischen den Tags ersetzen und durch eine leere Zeichenfolge ersetzen.

+0

Mögliche Duplikat [Streifen HTML aus Text JavaScript] (https://stackoverflow.com/questions/822452/strip-html-from-text-javascript) – OneNeptune

+1

@OneNeptune hast du dir sogar die Frage angesehen? –

+0

Ist Ihre Zeichenfolge nur die Schriftart oder gibt es mehr HTML? In jedem Fall würde ich Regex nicht verwenden, um HTML zu analysieren. – George

Antwort

0

Wenn alles, was Sie tun möchten, ist, alle leeren Font-Tags mit einer beliebigen Anzahl von Räumen zwischen den Tags zu finden und mit einem leeren String ersetzen, können Sie Ihre Regex etwas vereinfachen. Wenn, wie Sie mit Ihrem aktuellen Regex angegeben haben, möchten Sie auch eine Schicht von leeren Tags innerhalb es fangen, können Sie wie folgt vorgehen:

var reg = /<font[^>]*>(?:\s|&nbsp;|<(\w+)>(?:\s|&nbsp;)*<\/\1>)*<\/font>/gi 
 

 
var testStr = `<font size="3"></font> 
 
<font size="3"> </font> 
 
<font size="3">&nbsp;</font> 
 
<font size="3">&nbsp;&nbsp;&nbsp; </font> 
 
<font size="3"> </font> 
 
<font size="3"><something>&nbsp;&nbsp;</something></font>` 
 

 
console.log(testStr.replace(reg, ""))

0

versuchen diese

<font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*|(&nbsp;)+)<\/font> 

wie pro Ihre regex. Es fängt bereits Leerzeichen. Ich habe gerade den nbsp hinzugefügt;

regex101 Link: https://regex101.com/r/4Msyv1/2

+0

Was ist, wenn wir mehrere ' ' haben? – SaiUnique

+0

Ich habe es vergessen. Danke, dass du es mir gesagt hast –