拆分html包括用正则表达式拆分ul标签

时间:2016-08-16 16:02:26

标签: javascript jquery regex

我正在使用\b(\w+(?![^<>]*>))\b

按字词拆分HTML块
var html = splitParagraph.html();
var splitHtml = html.split(/\b(\w+(?![^<>]*>))\b/);

我正在执行此操作的HTML看起来如下所示:

                <h2>Lorem</h2><br>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor<br>
<br>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor<br>
<br>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor<br>
<br>
[Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor]<br>
<br>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor:<br>
<ul><br>
    <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor</li><br>
    <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor</li><br>
    <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor</li><br>
</ul><br>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor<br>
<br>

您可以在此处看到它:http://www.regexpal.com/?fam=95537

但是,我想要做的是使正则表达式在分割时还包含ul标记,这样,在数组中,它可能看起来像["lorem", " ", "ipsum", "<ul><li>lorem</li><li>ipsum</li><li>blah</li></ul>"](注意ul是它自己的项目)。因此,它不会在ul内部拆分任何东西,而只是转移到ul之后的任何内容。

我知道我可以使用\s*<ul[^>]*>[\S\s]*?<\/ul>\s*来匹配ul,(感谢the ref),但我不确定如何将这两者结合起来。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用/\<ul\>[\w\W]+\<\/ul\>|\b(\w+(?![^<>]*>))\b/g,但我确定这是一个较小的解决方案,因为这个解决方案只匹配原始版本以及<ul></ul>代码之间的任何内容。

我建议不要使用这种结构,因为它很难维护或扩展。您对所得数组所做的任何用例?也许有更好的选择。

编辑:如图所示,您可以使用|

加入两个正则表达式