2011-02-28 98 views
2

我有以下的HTML作为我的JavaScript函数的字符串:匹配HTML标记与内容的JavaScript正则表达式

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

我想提取这个字符串:(显然不带引号)

"onetwo"

能否请您提供一些纯粹的JavaScript代码(jQuery也行......)来获取标签的内容?

+2

不要使用正则表达式http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – RichardTheKiwi 2011-02-28 11:20:29

+0

+1好评。他现在会悔改..:D – 2011-02-28 11:22:00

回答

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

+0

+1好玩的技巧.. – 2011-02-28 11:21:03

+1

不使用正则表达式确实是这样做的关键:P – Exelian 2011-02-28 12:12:49

1

我做了以下的正则表达式来抓住从XML标签内容。 这只适用于包含内容且后面有结束标签的标签。不会获得包含其他标签的标签的内容。 标签名称是捕获组1和标签内容是捕获组2.这将努力获得的所有内容,包括<,>,”,“和&标签内容的内部。

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