使用正则表达式删除除具有特定类的html之外的所有html标记

时间:2014-08-28 05:36:52

标签: javascript regex

我有这个测试字符串

@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

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

你去吧

<强>正则表达式

/(<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

答案 1 :(得分:0)

 (?!<span class.*?</span>)(<[^/]*?>).*?(</.*?>)

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

参见演示。

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