正则表达式:包含所有属性的HTML标记

时间:2018-12-18 20:17:58

标签: html regex

我想匹配HTML标签及其包含的属性。尝试了以下regex

/<(\w+)(?: +(\w+)="[\w,;.:\-#'+~*?=&%\$!\/'\]\[@\(\)\s]*")*/gm

在该输入上:

<p><li first="1" second="2" third="3"></li><b><br/><p><li first="1" second="2" third="3"></li><b><br/></p>
<p><li first="1" second="2"></li><b><br/><p><li first="1" second="2"></li><b><br/></p>
<p><li first="1"></li><b><br/><p><li first="1"></li><b><br/></p>

我只有一个属性。如果标记中有多个属性,我总是会得到最后一个。第一行返回third,第二行返回second,最后一行返回first group 2

第一行的结果是:

p li third b br p li third b br

但应该是:

p li first second third b br p li first second third b br

如何将所有属性都添加到标签?

1 个答案:

答案 0 :(得分:1)

首先,我认为您可以使用[^"]代替[\w,;.:\-#'+~*?=&%\$!\/'\]\[@\(\)\s]

不幸的是,使用正则表达式无法捕获您案例中的所有参数。有关进一步的解释,请参见这篇文章:How to capture multiple repeated groups?