Please enable JavaScript to use regex101
/
^
r
e
g
e
x
[
\
-
_
]
?
1
0
1
$
/
i
Reg
ular
Ex
pressions
101
Reg
ular
Ex
pressions
101
Upgrade to Pro
Enterprise
Regular Expression
/
<(?:div|ul|li)(?=[^>]*\bclass="([^"]+)")(?=(?:[^>]*\bdata-\w+="([^"]+)")?)
/
gm
Input 1
1
New
With preg_match_all I want to get class and data-attributes in html. I asked a similar question before. The correct answer to the previous responsibility was done with DOM. But as an alternative to the DOM structure, I also need a regex version. The pattern works fine. However, if the lines are side-by-side, they also take class names from tags that should not be accepted. <div class="noproblem"> <ul class="noproblem" data-ss="1"> <li class="noproblem" data-ss="1"> <!-- <i> is not my tag. but there s no problem with that. because it s underneath . --> <i class="no_problem"></i> </li> </ul> </div> <div class="noproblem" data-ss="1"> <!-- problem: data-ss is not accepted --> <ul class="noproblem" data-ss="1"> <!-- <i> is not my tag. my tags: div|ul|li . --> <li class="noproblem"><i class="this_is_problem"></i> </li> </ul> </div> <div class="noproblem"> <ul class="noproblem"> <!-- <i> is not my tag. my tags: div|ul|li . --> <li class="noproblem"><i class="this_is_problem"></i> </li> <!-- <span> is not my tag. my tags: div|ul|li . --> <li class="test"><span class="this_is_problem"></span></li> <!-- (li class empty version): <span> is not my tag. my tags: div|ul|li . --> <li><span class="this_is_problem"></span></li> </ul> </div>