将HTML标记的内容与Javascript RegEx匹配

时间:2011-02-28 11:13:47

标签: javascript jquery html regex tags

我在JavaScript函数中将以下HTML作为字符串:

<p>one</p> <p align='center'>two</p>

我想提取这个字符串:

"onetwo"(显然没有引号)

你能否建议一些纯JavaScript代码(jQuery也可以...)来获取标签的内容?

2 个答案:

答案 0 :(得分:5)

使用jQuery,您不需要复杂的正则表达式,您可以轻松解析HTML并使用DOM:

var s = "<p>one</p> <p align='center'>two</p>";
var wrapper = $('<div />').html(s);
var text = wrapper.text();

在这种情况下,$(s).text()也会有效,但如果您在第一级有自由文字(例如<p>1</p>2),它就会失败,所以我通常会避开它。

请注意,此处的结果为"one two"(不是"onetwo"),因为<p>标记之间有空格。
如果这是一个问题,您可以使用wrapper.children().text()wrapper.find('p').text(),例如,根据您的确切需求。

工作示例:http://jsbin.com/osidi3

答案 1 :(得分:1)

我制作了以下Regex来从XML标签中获取内容。 这仅适用于包含内容且后跟结束标记的标记。不会获取包含其他标记的标记的内容。 标记名称位于捕获组1中,标记内容位于捕获组2中。这将用于获取所有内容,包括标记内容中的&lt;,&gt;,“,”和&amp;

<([^\s>]+)\s?[^>]*>(.*)(?:<\/\1)>