【问题标题】:Want to select all the text of <p> tag from a <pre> tag [duplicate]想要从 <pre> 标签中选择 <p> 标签的所有文本 [重复]
【发布时间】:2019-04-14 07:10:31
【问题描述】:

我正在尝试选择

之间的所有文本

来自父标签的标签。 这该怎么做。使用正则表达式

这是我的示例字符串

<p>sddsd</p>
<pre>
<p>line 1</p>
<p>line 2</p>
<p><line 3</p>
</pre>

我只想选择这个

line 1
line 2
line 3

我正在使用这个正则表达式,但它只选择 p 标签的第一行

<pre>\n<p>(.+)<\/p>

使用这个网站来运行你的正则表达式

https://regex101.com/

请帮帮我...

【问题讨论】:

  • 为什么要使用正则表达式?这被认为是bad practice
  • @trincot : 那我应该用什么?
  • 是字符串或html元素
  • DOM parser 会很好地完成这项工作。
  • @trincot :我现在不能使用它,我已经为我的整个项目编写了正则表达式,我一直坚持这个。请通过正则表达式帮助我。

标签: javascript html regex


【解决方案1】:

您可以使用 DOMParser() 。不需要正则表达式

var str = '<p>sddsd</p><pre><p>line 1</p><p>line 2</p><p>line 3</p></pre>';

var parser = new DOMParser();
var htmlDoc = parser.parseFromString(str, 'text/html');
console.log(htmlDoc.querySelector('pre').textContent)

【讨论】:

  • OP HTML 无效,因此结果将取决于实现。 P 元素很可能会被移出 PRE 元素,因此结果可能是一个空字符串。
  • 我认为这是&lt;p&gt;&lt;line 3&lt;/p&gt;的第三个元素的错字
猜你喜欢
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 2021-09-07
  • 2014-09-13
  • 2020-06-26
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多