使用javascript

时间:2019-01-30 03:01:22

标签: javascript regex

我已经看到很多带有正则表达式的特定标签的帖子,但是如果标签具有类或ID或任何与此相关的属性,该怎么办。我如何只获取span标签之间的文本。我在一些地方,span和h标签没有任何类,但大多数地方都有。

const html = <h4><span  class="title">Lorem ipsum..</span></h5><h3><span id="bl">xvcxv</span>

我已经从另一篇文章中尝试过了,但是这不是我想要的。

html.match(/<span>([\s\S]*)(?=<\span/>)/g);

1 个答案:

答案 0 :(得分:1)

在正则表达式中,您正在转义\s之类的符号,它将其含义转换为匹配空白字符。然后,您的正则表达式将与例如<span>test< pan/>

相匹配

闭合范围<\span/>不应包含正斜杠。内容在第一个捕获组中,您可以匹配<\/span>而不是使用正向前瞻。

这部分[\s\S]*是贪婪的,意味着它将一直匹配到< pan/>之后的最后一次出现。

对于您的示例数据,您不能匹配右尖括号<span[^>]*>,但不建议使用正则表达式匹配parse html。另一种选择是使用DOMParser

const html = `<h4><span  class="title">Lorem ipsum..</span></h5><h3><span id="bl">xvcxv</span>`;
let parser = new DOMParser();
let doc = parser.parseFromString(html, "text/html");
doc.querySelectorAll("span").forEach(s => console.log(s.innerHTML));