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

Javascript 使用正则表达式删除除具有特定类的html之外的所有html标记,javascript,regex,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&

我有这个测试字符串

@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@测试@test2@test@测试test@test.comTest@Test.com

dsfsfdsdfsdfs asdf测试f
我希望删除所有标签,同时保留它们的内容,除了带有类的span。。要想留下以下信息:

@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com dsfsfdsdfsdfs asdf test f
@test@test@测试@test2@test@测试test@test.comTest@Test.com dsfsfdsdfsdfs asdf Test f
这是我得到的,但它仍然不能正常工作

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

Regex

/(<span(?![^>]*class="mention")[^>]*>)([^<]*)<\/span>/g
/(<(\w+)(?![^>]*class="mention")[^>]*>)([^<]*)<\/\2>|(?:<br>|<br\/>)/g
测试字符串

@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>
更换图案

\2
\3
结果

@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>
@test@test <span class="mention">@test</span> @test2@test <span class="mention">@test</span> test@test.com Test @test.com    dsfsfdsdfsdfs asdf  test f
@test@test@测试@test2@test@测试test@test.comTest@Test.com dsfsfdsdfsdfs asdf Test f
演示


请尝试(?!不要用正则表达式解析HTML。谢谢!很抱歉我不是最清晰的,但我想删除所有HTML标记,不仅仅是跨距!谢谢编辑!但我想保留实际内容,只要匹配标记,如果这是您要找的。或者,也可以从br标记中删除非捕获。
 (?!<span class.*?</span>)(<[^/]*?>).*?(</.*?>)