2016-04-08 13 views
-1

Ich benutze Node.js.Wie man doppeltes Element mit Regex entfernt?

Ich habe Problem die folgende Zeichenfolge

<em><em>    - first Occurrence 
<em><em><em>   - second Occurrence 
<em><em><em><em>  - third Occurrence 
<em><em><em><em><em> - fourth Occurrence 

Wie zu behandeln Multiples zu entfernen und einzigen Tag nur machen?

Irgendwelche helfen mir zu handhaben.

Vielen Dank im Voraus.

Hinweis: Ich versuche, die regex "(<em>(<em>)?)"

Antwort

1

Suche:

(<em>)+ 

Und mit <em> ersetzen.

Dies wird eine oder mehrere (+) Vorkommen von <em> nacheinander finden. alle diejenigen, dann wird mit einem einzigen <em>, wodurch das Entfernen doppelte Tags

Live Demo on Regex101


Hier ersetzt ist der Grund, Ihre RegEx nicht funktioniert:

(
<em>   # Captures first <em> 
(<em>)?  # Optional <em> 
) 

so wird dies erfassen, höchstens, <em><em>. Dies funktioniert beim ersten Auftreten, aber nicht beim anderen. Wenn es <em><em><em> gibt, werden die ersten 2 in eins zusammengeführt, jedoch ist das letzte noch übrig.

Also für Ihre RegEx zu arbeiten, würden Sie haben es mehrfach (dh ersetzen auf der Original-Zeichenkette, dann ersetzen auf dem neuen ersetzt Zeichenfolge, dann auf das ersetzen, etc.) laufen

1

ich davon aus bin Es kann jedes Tag sein und nicht nur em, worüber Sie besorgt sind. Also ich bin mit .+ in meiner regex

console.log("<em><em><em><em>".replace(/(<.+?>)+/, "$1")) 

Ideone Demo

Verwandte Themen