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

Regular-Expression capture word in html tag

本文关键字:单词 html 正则表达式      更新时间:2023-09-26

我试图替换代码片段中的一些HTML标记。例如,span元素在没有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元素有一个id,所以它应该保持原样:Text abc <span id=MyId > text def

但对于var sHTML = 'Text abc <span style="color:#00ff00;" > text def ';它必须替换,因为span元素没有如下id:Text abc text def

知道吗?提前谢谢。

<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);