2011-02-02 55 views
1

我有一个HTML字符串像消除HTML标签

Lorem ipsum <a href='google.com'>google <span>rulz</span></a> not sum 

我想删除所有的HTML标签,我的意思是我想删除所有的HTML元素,所以字符串应该转化为(在JavaScript)

Lorem ipsum not sum 

我想它的匹配(和替换)它尤斯:

<([a-z][a-z0-9]*)\b[^>]*>.+?<\/([a-z][a-z0-9]*)\b[^>]*> 

的问题是,我得到

Lorem ipsum </a> not sum 

因为正则表达式替换为“google rulz”,但我希望它替换孔html标记,所以我发现它发生了。

有什么想法?

+3

你不使用的HTML解析器的原因吗? – robert 2011-02-02 12:29:34

+0

而不是删除一个正则表达式中的打开和关闭标签,你试过替换*任何*标签:`<.*?>`?这样,打开和关闭标签将被单独移除,并且不需要担心匹配它们。 – JaredC 2011-02-02 12:32:36

回答

0

您可以使用​​3210函数。

0

如果你从一个元素中检索这个文本,你可以得到它的innerText这将返回没有html这样的文本。

console.log(getElementById('someId').innerText); 
0

<[^>]*>匹配任何看起来像远程一个 HTML标记。如果这不够好,你应该使用一个完整的HTML解析器。

1

你可以使用jQuery来创建一个虚拟元素,并得到它的文本内容,即


<script type='text/javascript'> 
d = $('div'); 
d.html(text); 
stripped = d.text(); 
</script> 
0

尝试 var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi