我正在尝试使用正则表达式来清理我自己的 html5 RTE 中生成的一些代码。环顾四周,我看到很多人说不应该使用正则表达式来解析 html ......但我正在用 JavaScript 做这个客户端。除了正则表达式,我还有其他选择吗?
我一直在尝试使用lookbehinds(刚刚发现它们),但它们似乎不适用于JavaScript。我想要做的是删除 <p> 末尾的所有 <br>,但不是那些是段落中唯一元素的那些,例如 <p><br></p>。所以:
<p>Blah<br><br><br></p> becomes <p>Blah</p>
<p><br></p> stays the same.
到目前为止我只有
html = html.replace(/(?:<br\s?\/?>)+(<\/p>)/g, '$1');
这将删除段落末尾的所有 <br>,无论有多少。
我想要类似的东西
html = html.replace(/(?<!<p>)(?:<br\s?\/?>)+(<\/p>)/g, '$1');
编辑:我正在使用 contenteditable div 创建一个非常简单的 RTE,每次用户想要更改某些文本时都会动态创建该 RTE。基本上只是清除多余的 span、br 和 p 标签等。