旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

asp.net正则表达式删除指定的HTML标签的代码【C#.Net教程】,正则表达式 HTML标签

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:18评论:0


导读:假如通盘删除内里的HTML标签,可能会形成阅读上的难题(比方a,img这些标签),最好是删除一部分,保存一部分.正则表达式里,推断包括某些字符串是异常轻易明...
假如通盘删除内里的 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, ""); 
}

更多asp.net正则表达式删除指定的HTML标签的代码相干文章请关注ki4网!

标签:正则表达式 HTML标签


欢迎 发表评论: