我正在尝试修复我的HTML视图以进行W3C验证。错误的是我在span标签中有一些罕见的div或结构标签。这是一个用我的HTML代码制作的假例子:
<div style="margin-left:10px;">
<h2>Sub Title</h2>
<span><span class="bold_text">Phones : </span> 000-000-000000 / 000-000-000000 </span>
<br/>
<span><span class="bold_text">Email : </span>
<ul>
<li>For Support use <a href="mailto:support@email.com" >support@email.com</a></li>
<li>For CopyRights use <a href="mailto:copyright@email.com" >copyright@email.com</a></li>
<li>For Technical issue use <a href="mailto:staff@email.com" >staff@email.com</a></li>
</ul>
</span>
<span>
<span class="bold_text">Location : </span>
<div class="address_container">#0, City, Region, Country</div>
</span>
<div class="map_container" style="margin-top:10px;display:inline-block;width:90%;height:400px;" >
@yield('map_member')
</div>
我正在玩regex101,到目前为止我得到了这个:
<span[^>]*>[.\s\S]*<div[\s\S]*<\/div>[\s\S]*<\/span> /gm
必须匹配新的行和空格。但是这会选择1st并在最后一个span结束标记上结束。但我希望它只指向:
<span>
<span class="bold_text">Location : </span>
<div class="address_container">#0, City, Region, Country</div>
</span>
答案 0 :(得分:1)
要在SPAN中替换那些DIV,SPAN中是否有SPAN?
还可以假设,如果它以SPAN结束,它也是以SPAN开始的。
所以这个正则表达式只是使用一个正向前瞻来检查DIV后面跟着0或更多封闭的DIV或SPAN,然后用SPAN关闭。
\s*<div[^<>]*>[^<>]*</div>(?=(?:\s*<(div|span)[^<>]*>[^<>]*</\1>)*[^<>]*</span>)
替换为任何东西,它将是spick-and-span。