我正在尝试使用RegExp从JavaScript字符串中获取属性,但我还有最后一个问题。
我可以获取带或不带值的属性,如果忘记它们之间的空间我可以得到属性但我的RegExp也将标记名称作为属性。
实例: http://regex101.com/r/zX5dJ7/3
正则表达式:(\s*\w+(?:=\"[^\"]*(?:\")?)?)
示例html:<div name="value"otherattribute foo="bar/>
有没有办法要求RegExp避免使用标签名称?
编辑:
如果HTML是这样的:
<meta charset="utf-8" alone foo="tab"/>
<meta charset2="utf-8"foo2="tab"/>
<meta charset3="utf-8"alone2 foo3="tab unclosed/>
我想抓住这样的每个属性:
我以前的RegExp运行良好,但是她抓住了标签名称,我只想让regexp避免使用标签名称。
答案 0 :(得分:1)
如果您希望获得某些TAG与其关闭之间的所有内容,您可以使用
(?:<\w*)(.*)\/>
然后你可以从中提取你想要的任何东西。如果您需要更多信息,请告诉我
答案 1 :(得分:1)
这是我能想到的最好的:
([<\w\-]+(?:=)?(?:"|')?[\w\-]+(?:"|')?)
使用正则表达式后,您必须跳过以<
开头的匹配项。
DEMO: http://regex101.com/r/aL1sQ0/1
编辑:乔丹自己的最终解决方案:(?:<\w+)?(\s*\w+(?:=\"[^\"]*(?:\")?)?)?
答案 2 :(得分:0)
假设格式正确的HTML(请参阅我在OP中的评论应该假设格式化HTML),此正则表达式将解析您想要的所有内容,甚至允许&#34;&lt;&# 34;在标签名称中,您可以轻松摆脱标签并了解标签的内容以及不是什么
(\w+(=\".*?\"|)|<\w+)
解析随机格式错误的HTML实际上 NOT 是正则表达式的工作。我在这里引用了许多regexper的无数次痛苦的哭声,当他们被问到&#34;我如何用正则表达式解析HTML?&#34;。搜索stackoverflow以获取此类问题,并查看人们的回答。您将完全看到 为什么我们应该假设非格式错误的HTML。
如上所述,在您获得匹配并将它们放入数组或其他内容后,您可以检查以&#34;&lt;&#34;开头的任何字符串。并且您将知道它的标签 - 其余的属性与其内容一起被捕获,所以不用担心。