正则表达式以匹配html元素对

我有以下正则表达式来查找匹配的标签:

<(\w+)(\s*[^>]*)>[^<]+?<\/\1\s*>

这是非常基本的,但是基本上我正在尝试捕获标签(例如em),并确保该项目包含在同一标签中。以下是一些示例:https://regex101.com/r/1R1qzh/1。但是,如您所见,它也可以匹配以下内容:

<h5>tommy</h>

为什么会这样?此简化的html元素匹配的正确正则表达式是什么?要测试的输入为:

<h5 size="12">tommy</h>   # no
<h5>tommy</h5>            # yes
<h5 >tommy</h5>           # yes
<h5 size="12" >tommy</h5> # yes
<h5  >tommy</h5>          # yes
ddrcon 回答:正则表达式以匹配html元素对

通常,您不应该使用正则表达式来解析/验证HTML。如果您只想匹配格式正确的单级标记,则可以使用:

<([^\s>]+)(?:\s+[^>]*)*>[^<]+</\1\s*>

Demo

本文链接:https://www.f2er.com/3168769.html

大家都在问