簡體   English   中英

JavaScript正則表達式-分組,一個或多個字符,不包括設置的字符串

[英]JavaScript Regular Expression - grouping, one-or-more characters, excluding set character strings

我正在嘗試使用正則表達式來匹配和替換損壞的HTML,但是我對分組,回溯和量詞做了幾個完整的圈。 我正在努力匹配每種情況。

JavaScript,因為此問題是在Web客戶端瀏覽器HTML編輯器中觸發的。

損壞的HTML是特定的-結束LI和結束列表UL或OL之間的任何文本,都不能正確地形成為列表項。

例如,下面的更大示例中的這一部分:

    </li>
        bbb<strong>bbbb</strong><strong>bbb&nbsp;&nbsp;&nbsp; <span style="text-decoration: underline;"><em>bbbbb</em></span></strong>=0==
</ul>

這是問題可能存在的完整示例:

<ul>
    <li>1111</li>
    <li>Could be anything here</li>
    <li>aaaa</li>
        bbb<strong>bbbb</strong><strong>bbb&nbsp;&nbsp;&nbsp; <span style="text-decoration: underline;"><em>bbbbb</em></span></strong>=0==
</ul>
<ol>
    <li>more?<li>
    <li>echo</li>
</ol>

這就是我打算使用match + replace的HTML外觀。

<ul>
    <li>1111</li>
    <li>Could be anything here</li>
    <li>aaaabbb<strong>bbbb</strong><strong>bbb&nbsp;&nbsp;&nbsp; <span style="text-decoration: underline;"><em>bbbbb</em></span></strong>=0==
</ul>
<ol>
    <li>more?<li>
    <li>echo</li>
</ol>

以下是一些我嘗試過的表達式,但根據這些表達式(或略有不同),我匹配得太多或不正確嗎?

/<\/li>.*?<\/[ou]l>/mig
/<\/li>([\s\n]*[\w!\.?;,<:>&\\\-\{\}\[\]\(\)~#'"=/]+[\s\n]*)+<\/[ou]l>/mig
/<\/li>([\s\n]*[^\s\n]+[\s\n]*)+<\/[ou]l>/i

搜索了幾天,斷斷續續,沒有運氣..我意識到我可能在問幾百遍以前回答過的問題。

建議使用基於dom的方法處理html

使用jQuery:

$('ul>:not(li)').wrapAll('<li></li>');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM