2014-10-08 94 views
0

我想从HTML代码中分离HTML标记名。我的HTML代码如下:带正则表达式剥离HTML标记名

<div id="MyDiv" style="left:100px; top:10px;" > some text in div 
<strong> 
<em> Some text for em 
<p><b>b, <span id="MySpan">span1, 

在调用REg-Ex之后,我希望所有有效的HTML-Tagname来自字符串。 例如从上面的HTML代码应该导致如下所示:div,strong,em,p,b,span。 这里是我的方法:

sTagName = sTagName.replace(/< *(.*) *>/, '$1'); 
alert(sTagName); 

上述正则表达式,声明能够为<div>结果:div这是确定的。 但它提供了< div stlye="..." >结果:div stlye="..."这是错误的。 我期待它只有一个div。 换句话说,在HTML-Tagname中的空格之后,该字符串应该被删除,以便我得到div-Tagname。 出于性能原因,我不会再打两次RegEx-Statement。 在此先感谢。

+6

相关:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2014-10-08 15:40:59

+0

不能找出你想要做什么。您是否尝试匹配没有attr/val或strip attr/vals的标签? – sln 2014-10-08 15:46:31

+0

@詹姆斯感谢您的链接。这正是我正在寻找:) – user3815508 2014-10-08 15:51:19

回答

1

通过dom;

var el = $("<div/>").append(html_string).find("*").each(function() { 
    alert($(this).prop("tagName")); 
}); 
+0

是的,完美!您是否知道,它是否比使用RegExp更快(性能),例如如下所示:'sTagName = sTagName.replace(/ <\s*(\w+)[^/>] *> /,'$ 1');' – user3815508 2014-10-08 16:57:47

+0

我很仓促。 DOM传递一些tagName两次并且无序。我无法使用它。我会用RegEx更好地尝试。这里是我的方法:'sTagName = sTagName.replace(/(<.*?>)(。*?)] *>。*? user3815508 2014-10-09 06:32:46