Chci smazat prázdné značky, jako je <label></label>
, <font> </font>
takže:
<label></label><form></form> <p>This is <span style="color: red;">red</span> <i>italic</i> </p>
bude vyčištěno jako:
<p>This is <span style="color: red;">red</span> <i>italic</i> </p>
Mám tento RegEx v javascriptu, ale odstraní prázdné značky, ale také odstraní toto:"<i>italic</i></p>"
str=str.replace(/<[S]+></[S]+>/gim, "");
Co mi chybí?
Odpověď
Jako třídu znaků máte „bez mezer“, což znamená „<i>italic</i></p>
“ se bude shodovat. První polovina vašeho regulárního výrazu bude odpovídat „<(i>italic</i)>
“ a druhá polovina „</(p)>
“. (Použil jsem závorky, abych ukázal, co každý [S]+
shoduje se.)
Změňte toto:
/<[S]+></[S]+>/
K tomu:
/<[^/>][^>]*></[^>]+>/
Celkově byste měli opravdu používat správný HTML procesor, ale pokud žráte HTML polévku, mělo by to stačit 🙂