选择2个html标记内的文本以及嵌套标记内的文本-RegExp

问题描述

我正在使用以下表达式获取标记内的所有文本:

/(<\s*(div|a|p|span|h1|h2|h3|h4|h5|h6|title)[^>]*>)([^<]+)(<\s*\/\s*(div|a|p|span|h1|h2|h3|h4|h5|h6|title)[^>]*>)/gi

它实际上是在获取,但是如果在标签内有类似此标签的语句

<p class="lead mb-0">
   Freelance is a free to use,MIT licensed Bootstrap theme created by
   <a href="http://startbootstrap.com">StartBootstrap</a>
</p>

它会在a标签获取文本,但也不会在p标签获取文本。

解决方法

如果只想在标签之间选择文本,请使用以下命令:

(?<=(div|a|p|span|h1|h2|h3|h4|h5|h6|title)[^>]*>)([^<]+)/gi

共享表达式的问题是对结束标记的期望,对于嵌套标记则不是这种情况

(<\s*\/\s*(div|a|p|span|h1|h2|h3|h4|h5|h6|title)[^>]*>)/gi