我正在构建一个需要在html之间选择特定文本的应用程序,这是一个例子:
字符串:
<p><a href="test0">test1 test2</a>test3</p>
RegExp:(Select text between HTML)(test.)
我想选择的是“test1”,“test2”和“test3”,但不是“test0”
有没有解决方案?谢谢你的帮助
注意:我使用JavaScript进行RegExp操作。
答案 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