如何找到包含DIV标记的记事本++正则表达式的用于W3C验证的SPAN标记?
问题描述:
我想解决我的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>
答
若要替换SPAN内的那些DIV,而SPAN内存在SPAN?
人们也可以假设,如果它以SPAN结束,它也以SPAN开始。
所以这个正则表达式只是用正向量来检查DIV是否跟着0或更多的封闭的DIV或SPAN,然后用SPAN关闭。
\s*<div[^<>]*>[^<>]*</div>(?=(?:\s*<(div|span)[^<>]*>[^<>]*</\1>)*[^<>]*</span>)
用什么都替换,它会是spick-and-span。
这解决了我完全找到这些div的问题。它直接指向div标签,因此比我期望的要好!非常感谢你! –
我没有在他们的div,所以我用任何单词字符\ w {1,4}替换div以匹配任何标签 \ s * ] *> [^ ] * (?=(?: \ s * ] *> [^ ] * )* [^ ] * ) 我意识到我有一堆标题标记在我的span标记中,W3C不验证。 –