簡體   English   中英

正則表達式按標簽分割HTML,其中文本包含少於n個字符

[英]Regex to split HTML by Tags which text contain less that n characters

我想用<p>標記分割以下字符串,這些標記包含少於4個字符的文本。 假設使用正則表達式<p>1</p><p>2</p>

<span id="_ctl0_contentMain__kDP_dp_Text" class="kDPText">
<p>1</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>2</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</span>

以下正則表達式將<p>...</p>與標簽之間的最多三個字符匹配:

<p>.{0,3}<\/p>

演示:

 var input = `<span id="_ctl0_contentMain__kDP_dp_Text" class="kDPText"> <p>1</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>2</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </span>`; console.log(input.split(/<p>.{0,3}<\\/p>/)); 

如果要使用正則表達式,可以使用類似於此代碼的內容。

var string_to_split= document.getElementById("_ctl0_contentMain__kDP_dp_Text").innerHTML
var your_regExp = new RegExp("<p>.{0,3}<\/p>","ig");
var result = string_to_split.split(your_regExp).filter(function(x) {return x.trim().length;});

如果您不想訴諸RegEx,則可以使用像這樣的腳本(仍然是普通的javascript,但是在較舊的瀏覽器[ie8]中,您應該對querySelectorAll使用polyfill):

var allParagraph = document.querySelectorAll("#_ctl0_contentMain__kDP_dp_Text > p");
var split_para = Array.prototype.reduce.call(
    allParagraph,
    function(acc, x) { 
      if (x.innerHTML.length < 4) {
        acc.unshift([]);
      } else {
        acc[0].push(x);
      }
      return acc;
    },
    []
).reverse();

當然,第一個解決方案比較簡單,但是在結果變量中有一個字符串,split_para數組將原始段落分成根據拆分規范分組的數組

暫無
暫無

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

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