【问题标题】:How to select specific text between HTML tags with RegExp?如何使用 RegExp 在 HTML 标记之间选择特定文本?
【发布时间】:2013-03-23 08:20:32
【问题描述】:

我正在构建一个需要在 html 之间选择特定文本的应用程序,这是一个示例:

字符串: <p><a href="test0">test1 test2</a>test3</p>

正则表达式:(Select text between HTML)(test.)

我要选择的是“test1”、“test2”和“test3”,而不是“test0”

有什么解决办法吗?谢谢大家的帮助

注意:我正在使用 JavaScript 进行 RegExp 操作。

【问题讨论】:

标签: javascript html regex conditional-statements


【解决方案1】:

您可以利用浏览器为您解析 HTML 的能力:

var html = '<p><a href="test0">test1 test2</a>test3</p>',
fragment = document.createDocumentFragment(),
div = fragment.appendChild(document.createElement('div'));

div.innerHTML = html;

console.log(div.textContent || div.innerText || '');

输出:

test1 test2test3

【讨论】:

    【解决方案2】:

    我不会将正则表达式用于此类任务,如果您只需要 &lt;p&gt; 标记的文本,我会使用 jQuery:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <meta charset=utf-8 />
    <title>JS Bin</title>
    </head>
    <body>
      <p><a href="test0">test1 test2</a>test3</p>
      <script>
      $(function(){
        text = $('p').text();
        alert(text);
      });
      </script>
    </body>
    </html>
    

    这会返回test1 test2test3

    工作示例:http://jsbin.com/uhadoz/1/

    如果您想要更通用的解决方案,您仍然可以使用 jquery,只需更改选择器: 例如要获取所有divs的文本,使用$('div').text()

    但是如果你有严重的解析需求,你最好使用 HTML 解析器,google for JavaScript HTML解析器,例如这个:http://ejohn.org/blog/pure-javascript-html-parser/

    阅读这个关于使用正则表达式解析 HTML 的 SO 问题:RegEx match open tags except XHTML self-contained tags

    【讨论】:

    • 我认为 OP 需要一个更通用的解决方案,即不仅限于 &lt;p&gt; 标签,而是所有可以包含文本内容的标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 2015-06-06
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多