如何在W3C验证中找到包含带有notepad ++ regex的DIV标签的SPAN标签?

时间:2017-08-02 14:38:28

标签: html regex notepad++

我正在尝试修复我的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>

1 个答案:

答案 0 :(得分:1)

要在SPAN中替换那些DIV,SPAN中是否有SPAN?

还可以假设,如果它以SPAN结束,它也是以SPAN开始的。

所以这个正则表达式只是使用一个正向前瞻来检查DIV后面跟着0或更多封闭的DIV或SPAN,然后用SPAN关闭。

\s*<div[^<>]*>[^<>]*</div>(?=(?:\s*<(div|span)[^<>]*>[^<>]*</\1>)*[^<>]*</span>)

替换为任何东西,它将是spick-and-span。