javascript - 正则表达式捕获html标签中的单词

标签 javascript jquery html regex

我尝试替换代码片段中的一些 HTML 标签。例如。 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 .

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

最佳答案

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

关于javascript - 正则表达式捕获html标签中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362982/

相关文章:

javascript - 为数组项添加 onclick 事件

javascript - jQuery在textarea中显示html排除元素

javascript - AngularJs ng-click VS jquery on ('click' )

html - 垂直对齐 anchor 内的图像

html - 修复我的 'Responsive' 设计

javascript - 尝试通过 html 显示显示器的宽高比

javascript - 从 Spotify Apps API 获取用户加星标的播放列表?

javascript - 如何不在 IE8 或更早版本上执行脚本?

javascript - 对状态中的元素进行排序后,React 列表不会重新渲染表格

javascript - JQuery 设置后找不到 .NET 隐藏字段值