使用正则表达式在HTML中查找列表的开头

Roy*_*ico 2 regex

我在网页中有一个TextBox,我正在使用javascript来解析和修改HTML格式.90%的效果非常好,我试图支持的最后一个主要功能是从word文档中复制和粘贴.我完全得到它,我只是坚持找到列表并将它们包装在UL标签中.

所以,使用正则表达式,我想在本文中找到列表:

<p>paragraph goes here

<li>goes here<br/>
<li>list item 2<br/>
<li>list item 3<br/>

<p>another paragraph
Run Code Online (Sandbox Code Playgroud)

<li><ul>标记包装该部分.我的正则表达不是那么好,有人可以帮忙吗?

-----更新-----

虽然我很感谢所有的反馈,基本上表明我需要从头开始解决这个问题,但我没有时间这样做.我完全理解正则表达式不是处理HTML格式的理想方式,但我现在如何使用它,它将处理我的用户希望做的大部分工作.我只需要HTML标签的子集,而不是完整的HTML编辑器.

我的内容来源是用户从word文档(约99.9%)复制和粘贴的时间.我使用正则表达式将HTML标记插入纯文本.对于列表,我发现子弹字符MS字插入其复制的文本,并将其替换为<LI>标记.我只是想让用户友好的方式用<LI>标签包装<UL>标签.

我会考虑能够正确地结束我的标签,所以..假设它们正确结束,用<ul>标签包装我的列表项的正则表达式是什么?

谢谢!

Jam*_*ton 7

有些人在面对问题时会想"我知道,我会使用正则表达式".现在他们有两个问题. - 杰米·扎温斯基

  1. 正则表达式和HTML特别糟糕.

  2. 这是2009年,在HTML中使用结束标记.(如果你真的想要你的html正则表达式,那将帮助你.

  3. 如果您已在浏览器中使用此页面,请使用DOM!让浏览器为您解析HTML(如果必须,将其推送到隐藏的div中)并导航生成的DOM树.


Chr*_*utz 5

不要使用正则表达式解析HTML.相反,使用真正的HTML解析器.

很抱歉,如果我的答案感觉不实际,但几乎每天都会问这个问题,而且你的要求(在我看来)对正则表达式来说太复杂了.

此外,您的所有标签都没有关闭.你应该这样写:

<p>paragraph goes here</p>

<li>goes here</li>
<li>list item 2</li>
<li>list item 3</li>

<p>another paragraph</p>
Run Code Online (Sandbox Code Playgroud)

我的HTML可能会关闭,但你应该真正关闭所有标签.