2017-05-25 3 views
-1

Ich habe diese Zeichenfolge. Ich möchte span mit ID entfernen, ohne die Daten zu entfernen.Regex zu entfernen span mit ID ohne Daten

Eingang: var teststring = "<span class="test01">Electrical drafting Scheduling tools <span id="spcc15in0os0">draftin</span><span> </span> Scheduling tools Mechanical</span>"

Erwartete Ausgabe:

"<span class="test01">Electrical drafting Scheduling tools draftin<span> </span> Scheduling tools Mechanical</span>" 

Ich bin neu in regex. Habe einige Dinge probiert.

Try1: testString.replace(/<\/?span\sid=[^>]*>/g, "") Ergebnis: Aber es ist nicht das Schließen Tag der Spanne Entfernen

Try2: testString.replace(/(<span id=".*"(?: \w+="[^"]+")*>([^<]*)<\/span>)/gi, "") Ergebnis: es ist das Entfernen Spanne mit Daten-ID mit.

+3

nicht regex verwenden html Inhalt –

+0

Wie @ArunPJohny zu analysieren hat gesagt, [** nicht verwenden regex zum html-parsen **] (https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) Sie können jedoch jQuery verwenden, einfach html string in '$ (myStringHere)' – George

+0

In welcher Umgebung soll diese Zeichenfolge analysiert werden? Server/Client-Seite? Wenn Sie Javascript haben, können Sie es einfacher machen, indem Sie [innerHTML] verwenden (https://www.w3schools.com/jsref/prop_html_innerhtml.asp) –

Antwort

0

Sie sollten nicht HTML über Regex analysieren, wenn Sie nicht müssen. Sie markiert Ihren Beitrag mit jquery, so dass dies für Sie arbeiten konnte:

var testString = "<span class='test01'>Electrical drafting Scheduling tools <span id='spcc15in0os0'>draftin</span><span> </span> Scheduling tools Mechanical</span>"; 
 

 
var $element = $(testString); 
 
$element.find("span").each(function(index) { 
 
    var innerText= $(this).text(); 
 
    $(this).replaceWith(innerText); 
 
}); 
 

 
var newString = $element.html(); 
 

 
console.log(newString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>