如何使用RegEx在HTML标签之间选择特定文本?

时间:2013-04-02 06:12:47

标签: javascript html regex conditional-statements

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

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

RegExp:(Select text between HTML)(test.)

我想选择的是“test1”,“test2”和“test3”,但不是“test0”

有没有解决方案?谢谢你的帮助

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

2 个答案:

答案 0 :(得分:3)

您可以利用浏览器为您解析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

答案 1 :(得分:1)

我不会将Regex用于此类任务,如果您只需要<p>标签的文本,我会使用 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/

阅读这个关于使用Regexes解析HTML的问题:RegEx match open tags except XHTML self-contained tags