正则表达式捕获html标记中的单词

时间:2015-02-06 09:54:58

标签: javascript jquery html regex

我尝试在代码段中替换一些HTML-Tags。例如。 span-element是在没有id时替换,但是当它有id时不能替换。

这是我的方法:

var sHTML = 'Text abc <span> text def ';
sHTML = sHTML.replace(/<\s*\/*\s*span(.[^(id\=)]*){0,1}?>/ig, '');
alert(sHTML);

它错了!因为当“id =”出现时它不能替换,但是如果发生某些单个字符,如“i”或“d”或“=”,它不应该有任何区别,它必须替换。 换句话说,我期望: var sHTML = 'Text abc <span id=MyId > text def ';没有什么可以替换,因为span-element有一个id,所以它应该保持原样如下:Text abc <span id=MyId > text def

var sHTML = 'Text abc <span style="color:#00ff00;" > text def '; 它必须替换,因为span-element没有id,如下所示:Text abc text def

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

<span (?![^>]*id)[^>]*>[ ]*|<\/span>

试试这个。看看演示。

https://regex101.com/r/vD5iH9/82

var re = /<span (?![^>]*id)[^>]*>[ ]*|<\/span>/gim;
var str = 'Text abc <span style="color:#00ff00;" > text def \'; \nText abc <span id=MyId > text def \nText <span color="red" >abc</span>';
var subst = '';

var result = str.replace(re, subst);