2017-08-02 81 views
-1

我想解决我的W3C验证的HTML视图。错误的是,我在span标签中有一些稀有的div或结构标签。下面是我的HTML代码做了一个假的例子:如何找到包含DIV标记的记事本++正则表达式的用于W3C验证的SPAN标记?

<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:[email protected]" >[email protected]</a></li> 
     <li>For CopyRights use <a href="mailto:[email protected]" >[email protected]</a></li> 
     <li>For Technical issue use <a href="mailto:[email protected]" >[email protected]</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 

它必须与新的线条和空间。但是,这选择第1个并在最后一个跨度结束标记处结束。但我希望它只指向:

<span> 
    <span class="bold_text">Location : </span> 
    <div class="address_container">#0, City, Region, Country</div> 
</span> 

回答

1

若要替换SPAN内的那些DIV,而SPAN内存在SPAN?

人们也可以假设,如果它以SPAN结束,它也以SPAN开始。

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

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

用什么都替换,它会是spick-and-span。

+0

这解决了我完全找到这些div的问题。它直接指向div标签,因此比我期望的要好!非常感谢你! –

+0

我没有在他们的div,所以我用任何单词字符\ w {1,4}替换div以匹配任何标签 \ s * <\w{1,4}[^<>] *> [^ <>] * <\/\w{1,4}>(?=(?: \ s * <(\ w {1,4} | span)[^ <>] *> [^ <>] * <\/\1>)* [^ <>] * <\/span>) 我意识到我有一堆标题标记在我的span标记中,W3C不验证。 –