【发布时间】:2014-07-24 14:58:24
【问题描述】:
请问匹配html标签的正则表达式规则是什么
<span id="id1" class="class1" attribute="attribute1">Test</span>
与标签 SPAN 匹配,无论其中的属性。
我现有的规则是这样的,但不起作用。
/(<span [^>]*>)>/s
【问题讨论】:
标签: regex
请问匹配html标签的正则表达式规则是什么
<span id="id1" class="class1" attribute="attribute1">Test</span>
与标签 SPAN 匹配,无论其中的属性。
我现有的规则是这样的,但不起作用。
/(<span [^>]*>)>/s
【问题讨论】:
标签: regex
/<span[^>]*>[^>]*<\/span>/
【讨论】:
【讨论】:
大卫,(<span [^>]*>)> 的原因是你有一个小错字。
你看,那个表达式试图匹配 两个 关闭>:仔细查看末尾>)>。例如,它将匹配 <span hey there>> 但不匹配 <span hey there>
要匹配起始跨度,请确保您只有一个 >。
关于使用正则表达式匹配 html 的所有免责声明,这个正则表达式可以:
<span[^>]*>
如果您有时期望SPAN,请确保它不区分大小写。
只要你有时间:额外的繁荣
@DavidEhrmann 在评论中指出,上面的正则表达式将匹配<spanner>。如果你想让他开心,并确保跨度不仅仅是<span>,它总是在span之后包含一个空格,你可以使用:
<span(?: [^>]*)?>
但是,在我看来,这是不必要的繁荣。当我们用 regex 解析 html 时,我们总是知道我们使用的是一个粗糙的工具,并且我们依赖于输入的格式相当好。例如,使用上面修改过的正则表达式,我们仍然有上百万种方法可以匹配不正确的 html,例如:<span classification>
怎么办?没有。了解您的工具,了解它们可以做什么,了解风险,并决定何时需要正则表达式以及何时需要 DOM 解析器。
【讨论】:
<span...> 制作更具体的正则表达式将充满错误(我们要允许什么:类?ids?样式?)
<spanner>,应该davidlee也关心。 :) 干杯。