asp.net正则表达式删除指定的HTML标签的代码

如果全盘删除里面的 HTML 标签,可能会造成阅读上的困难(比如 a, img 这些标签), 最好是删除一部分,保留一部分.

正则表达式里,判断 包含某些字符串 是非常容易理解的,但是如何判断 不包含某些字符串 (是字符串,不是字符,是某些,不是某个) 确实是个费解的事.
复制代码 代码如下:

<(?!((/?\s?li)(/?\s?ul)(/?\s?a)(/?\s?img)(/?\s?br)(/?\s?span)(/?\s?b)))[^>]+>

这个正则是判断HTML标签不包含 li / ul / a / img / br / span / b 的,就上面的要求来说,是要 删除 除这里列出的HTML标签,这也是我摸索了很长时间才搞出来的.
(?!exp) 匹配后面跟的不是exp的位置
/?\s? 我一开始试着把它写到最前面的 < 后面,但是测试失败了.

下面是一个简单的函数,把要保留的TAG串起来,生成一个正则表达式,然后把不需要的TAG删除...
复制代码 代码如下:

private static string RemoveSpecifyHtml(string ctx) {
string[] holdTags = { "a", "img", "br", "strong", "b", "span" };//要保留的 tag
// <(?!((/?\s?li)(/?\s?ul)(/?\s?a)(/?\s?img)(/?\s?br)(/?\s?span)(/?\s?b)))[^>]+>
string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@")(/?\s?", holdTags));
Regex reg = new Regex(regStr, RegexOptions.Compiled RegexOptions.Multiline RegexOptions.IgnoreCase);

return reg.Replace(ctx, "");
}

修正:
上面的正则,如果保留了 li , 实际运行会发现 link 也给保留下来了, 保留 a 会把 addr 也给保留下来, 解决办法就是加 \b 断言.
复制代码 代码如下:

<(?!((/?\s?li\b)(/?\s?ul)(/?\s?a\b)(/?\s?img\b)(/?\s?br\b)(/?\s?span\b)(/?\s?b\b)))[^>]+>

private static string RemoveSpecifyHtml(string ctx) {
string[] holdTags = { "a", "img", "br", "strong", "b", "span", "li" };//保留的 tag
// <(?!((/?\s?li\b)(/?\s?ul\b)(/?\s?a\b)(/?\s?img\b)(/?\s?br\b)(/?\s?span\b)(/?\s?b\b)))[^>]+>
string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@"\b)(/?\s?", holdTags));
Regex reg = new Regex(regStr, RegexOptions.Compiled RegexOptions.Multiline RegexOptions.IgnoreCase);

return reg.Replace(ctx, "");
}

时间: 2024-08-02 19:34:54

asp.net正则表达式删除指定的HTML标签的代码的相关文章

asp.net正则表达式删除指定的HTML标签的代码_实用技巧

如果全盘删除里面的 HTML 标签,可能会造成阅读上的困难(比如 a, img 这些标签), 最好是删除一部分,保留一部分. 正则表达式里,判断 包含某些字符串 是非常容易理解的,但是如何判断 不包含某些字符串 (是字符串,不是字符,是某些,不是某个) 确实是个费解的事. 复制代码 代码如下: <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+> 这个正则是判断HTML标签不

正则表达式删除指定的HTML 标签

 抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 "费解" 的HTML标签,把预订的格式搅乱. 如果全盘删除里面的 HTML 标签,可能会造成阅读上的困难(比如 a, img 这些标签), 最好是删除一部分,保留一部分. 正则表达式里,判断 包含某些字符串 是非常容易理解的,但是如何判断 不包含某些字符串 (是字符串,不是字符,是某些,不是某个) 确实是个费解的事. <(?!((/?s?li)|

android通过后台接口获取的html如何用一正则表达式删除末尾的换行标签

问题描述 android通过后台接口获取的html如何用一正则表达式删除末尾的换行标签 从接口返回到客户端的html内容里有时会在内容的末尾有多个回车(br标签).导致客户端在显示时,底部拉了一大段空白.我希望在把内容显示之前将末尾的br全部去掉.目前想到采用正则表达式来做,但是写来写去总写不对.希望高手帮忙. 解决方案 你可以直接用replace吗,替换掉br为空

PHP删除指定文件夹所有文件代码

删除指定文件夹所有文件  代码如下 复制代码 $cacheDir = '../cache/runtime'; $dh = opendir($cacheDir); while ( $file = readdir($dh) ) { if (($file == '.') || ($file == '..')) { continue; } if (file_exists( $cacheDir . '/' .$file)) { if (!unlink($cacheDir . '/' . $file)) {

asp.net c# 删除节点与节点重命名代码

asp教程.net c# 删除节点与节点重命名代码 private void menuitemdelete_click(object sender, system.eventargs e) { try { if(messagebox.show(this,"删除节点<"+treeview.selectednode.text.trim()+">,与其对应的信息也将被删除,你确定要删除吗?","information",messagebox

jquery删除指定的html标签并保留标签内文本内容的方法

 有时我们希望删除这段html代码里面的一对<p>标签,但是要保持里面的内容不被删除,本文提供的这个jquery方法就可以简单实现.   例如有这样一段html代码:    代码如下:脚本之家演示代码   <p>大家好,欢迎来到jb51.net</p>   这里为大家提供最优秀的<a href="http://www.jb51.net/js">js</a>代码和教程       我们希望删除这段html代码里面的一对<p

jquery删除指定的html标签并保留标签内文本内容的方法_jquery

例如有这样一段html代码: 复制代码 代码如下: 演示代码  <p>大家好,欢迎来到jb51.net</p>  这里为大家提供最优秀的<a href="http://www.jb51.net/js">js</a>代码和教程  我们希望删除这段html代码里面的一对<p>标签,但是要保持里面的内容不被删除,这里我们用jquery处理,详细的jQuery代码: 复制代码 代码如下: <script type="t

asp 使用正则表达式替换word中的标签,转为纯文本

公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交.结果是在内容显示页面上是五花八门的样式,有时也需要部分纯文本内容作为摘录使用,这些都需要清除word格式.改变客户的习惯要客户先复制到记事本里再粘贴到编辑器里编辑是很难的,所以从我们自己改变起.从网上百度了若干清除word格式的正则,使用效果不甚理想,所以自己写了清除word格式的asp函数,能满足我们自己的使用需求.函数如下: 复制代码 代码如下: function cleanWord(html)

asp 使用正则表达式替换word中的标签,转为纯文本_应用技巧

公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交.结果是在内容显示页面上是五花八门的样式,有时也需要部分纯文本内容作为摘录使用,这些都需要清除word格式.改变客户的习惯要客户先复制到记事本里再粘贴到编辑器里编辑是很难的,所以从我们自己改变起.从网上百度了若干清除word格式的正则,使用效果不甚理想,所以自己写了清除word格式的asp函数,能满足我们自己的使用需求.函数如下: 复制代码 代码如下: function cleanWord(html)