正規表現を使用して、独自の html5 RTE で生成されたコードをクリーンアップしようとしています。周りを検索すると、HTMLの解析に正規表現を使用すべきではないと言っている人がたくさんいます...しかし、私はこのクライアント側でJavaScriptを使用しています。正規表現以外のオプションはありますか?
私は後読みを使用しようとしていますが (それらについて知ったばかりです)、JavaScript では動作しないようです。私がしたいのは、<p> の最後にあるすべての <br> を削除することですが、<p><br></p> のように段落内の唯一の要素である <br> は削除しません。そう:
<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> の数に関係なく、段落の末尾にあるすべての <br> を削除します。
次のようなものが欲しい
html = html.replace(/(?<!<p>)(?:<br\s?\/?>)+(<\/p>)/g, '$1');
編集:私は contenteditable div を使用して、ユーザーがテキストを変更するたびに動的に作成される非常に単純な RTE を作成しています。基本的に、冗長なスパン、br、および p タグなどをクリアするだけです。