正则表达式-获取不在span标签中的文本

时间:2019-02-12 14:00:16

标签: javascript html regex invert

我正在努力(或根本没有)用JavaScript执行正则表达式任务:

我有一个像这样的字符串:

Foo <span class="underline">Bar</span><span>asdasasaff</span> Baz

现在,我想执行正则表达式(也欢迎使用替代方法)操作,以获取封装在span标签中的匹配项数组,因此在此示例['Foo ', ' Baz']中。

我尝试了很多方法,最后一次尝试使用此正则表达式:

(.(?!(<span\b[^>]*>(.*?)<\/span>)))*$

所以我要查找跨度并“反转”匹配项,但这是行不通的。

我在这里有一个在线示例:https://regex101.com/r/JTPx4r/1

有人可以帮助我获得想要的输出吗?

非常感谢您!

2 个答案:

答案 0 :(得分:1)

对您有用吗?

$("div").find("span").text("");
var w = $("div").text();
console.log(w.split(" ").filter(a => a));  // updated as per @SteeveDroz's suggestion
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>Foo <span class="underline">Bar</span><span>asdasasaff</span> Baz</div>

答案 1 :(得分:1)

我不确定这是否适合您,但是...

'Foo <span class="underline">Bar</span><span>asdasasaff</span> Baz'.split(/<span[^>]*>.*?<\/span>/g)

基本思想-按与标签匹配的正则表达式进行划分。