我正在使用 \b(\w+(?![^<>]*>))\b
按单词分割 HTML block
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 )但我不知道如何将这两者结合起来。
最佳答案
你可以尝试/\<ul\>[\w\W]+\<\/ul\>|\b(\w+(?![^<>]*>))\b/g
,但我确信有一个更小的解决方案,因为这个解决方案仅与您的原始解决方案以及 <ul>
之间的任何内容相匹配和</ul>
标签。
我建议不要使用这种结构,因为它很难维护或扩展。您将如何处理生成的数组?也许有更好的选择。
编辑:如图所示,您只需使用 |
连接两个正则表达式即可
关于javascript - 拆分 html,包括使用正则表达式拆分 ul 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38979545/