2017-01-12 6 views
1

Ich versuche, die Zeit ganze solche Strings zu ersetzen:Javascript ersetzen tag-regex undepend html-Attribute

<title id="hello">my title </title> 
<title >my title </title> 
<title id="hello" class="blue">my title </title> 

i regex müssen, die Ersetzen von Text zwischen Titel-Tags, undepend Attribute. leider bekomme ich nur zweites Beispiel mit dieser Regex:

str.replace(/<\/?title>/g,'') 

jemand Ideen hat?

+1

Was wollen Sie tun? –

Antwort

1

Es ist immer besser, die Verwendung von Regex zum Parsen von HTML zu vermeiden.

RegEx match open tags except XHTML self-contained tags

Using regular expressions to parse HTML: why not?


stattdessen ein temporäres DOM-Element mit dem Inhalt erzeugen und Anwendung aller die Änderung schließlich den HTML-Inhalt bekommen.

var html = `<title id="hello">my title </title> 
 
<title >my title </title> 
 
<title id="hello" class="blue">my title </title>`; 
 

 
// generate a temporary div elementt 
 
var temp = document.createElement('div'); 
 
// set its html content as the string 
 
temp.innerHTML = html; 
 

 
//do the rest here 
 
// get all title tags 
 
Array.from(temp.getElementsByTagName('title')) 
 
    // iterate over the title tag and do the necessary chenges 
 
    .forEach(function(ele) { 
 
    ele.innerHTML = 'new content' 
 
    }) 
 

 
// get back the updated html content from dom element 
 
console.log(temp.innerHTML);


Fore NodeJS verweisen: HTML-parser on Node.js

+0

Das ist eine nette Lösung, aber in meinem Kontext hilft es mir nicht. Ich untersuche Webseiten für title-tag. Ich bekomme einen Body von jeder Webseite und suche nach Titel-Tags. Einige Webseiten haben innerhalb title-tag Attribute und einige Seiten nicht. Ich habe kein "Dokument" -Objekt. Ich arbeite mit NodeJs. –

+0

@RomaKap: http://stackoverflow.com/questions/7977945/html-parser-on-node-js –

+0

@RomaKap: https://github.com/cheeriojs/cheerio –