【问题标题】:Removing all html tags except for html with specific class using regex使用正则表达式删除除具有特定类的 html 之外的所有 html 标记
【发布时间】:2014-08-28 05:36:52
【问题描述】:

我有这个测试字符串

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com <br> <a></a> <hr></hr> <span>dsfsfdsdfsdfs asdf </span> <span>test</span> <a>f</a>

我希望删除所有标签,同时保留它们的内容,除了带有类提及的跨度。为了留下以下内容:

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com dsfsfdsdfsdfs asdf test f

这是我得到的,但它仍然无法正常工作

/(?!<span class="mention".*?<\/span>)(<([a-z]*)>(.[^<>]*|)<(\/[a-z]*)>)/g

任何帮助将不胜感激!

【问题讨论】:

标签: javascript regex


【解决方案1】:

给你

正则表达式

/(<span(?![^>]*class="mention")[^>]*>)([^<]*)<\/span>/g

替换模式

\2

测试字符串

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com <br> <a></a> <hr></hr> <span>dsfsfdsdfsdfs asdf </span> <span>test</span> <a>f</a>

结果

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com <br> <a></a> <hr></hr> dsfsfdsdfsdfs asdf  test <a>f</a>

演示

试试demo here

这将撕掉所有没有指定类属性class="mention"的span标签


编辑

按照这里的要求,您可以如何去除所有 html 标签,但需要提及类的标签除外

正则表达式

/(<(\w+)(?![^>]*class="mention")[^>]*>)([^<]*)<\/\2>|(?:<br>|<br\/>)/g

替换模式

\3

结果

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com    dsfsfdsdfsdfs asdf  test f

演示

试试demo here

【讨论】:

  • 谢谢!抱歉,我不是最清楚的,但我想删除所有 html 标签,而不仅仅是跨度!
  • 感谢编辑!但我想保留实际内容并匹配标签
  • 如果这是您要查找的内容,请参阅 regex101.com/r/gF7wW6/6。或者这个regex101.com/r/gF7wW6/7,也从 br 标签中删除了非捕获。
【解决方案2】:
 (?!<span class.*?</span>)(<[^/]*?>).*?(</.*?>)

这符合你想要的所有东西。

查看演示。

http://regex101.com/r/uU0hL0/2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2010-09-06
    • 2016-01-10
    • 2016-01-18
    • 2023-04-02
    • 2011-05-15
    • 2023-03-10
    • 2015-07-10
    相关资源
    最近更新 更多