簡體   English   中英

正則表達式/JS – 從特定 xml 標記中刪除內容並僅保留文本

[英]Regular Expression/JS – remove content from specific xml tags and keep only text

我想從特定標簽中刪除內容並只保留文本。 我正在使用 Javascript 但在 React Native 上,所以我不能使用 Dom 或 JQuery。

例如,對於這個輸入,我想刪除“li”的所有子標簽:

<div>
     <div><span>hello</span></div>  
     <ul>
         <li><div><span>hello 2</span></div></li>
         <li><div><span>hello 3</span></div></li>
     </ul>       
</div>

我想要這個 output:

<div>
     <div><span>hello</span></div>  
     <ul>
         <li>hello 2</li>
         <li>hello 3</li>
     </ul>       
</div>

我怎樣才能做到這一點? (同樣,不使用 DOM 或 JQuery)

謝謝!

這是一個原生的 JavaScript 方法來過濾掉<li>標簽中的特定標簽:

 var str = '<div>\n' + ' <div><span>hello</span></div>\n' + ' <ul>\n' + ' <li><div><span>hello 2</span></div></li>\n' + ' <li><div><span>hello 3</span></div></li>\n' + ' </ul>\n' + '</div>'; var re1 = /(<li> *)(.*?)(<\/li>)/g; var re2 = /<\/?(div|span)\b[^>]*> */g; var result = str.replace(re1, function(m, p1, p2, p3) { return p1 + p2.replace(re2, '') + p3; }); console.log('result:\n' + result);

控制台 output:

result:
<div>
     <div><span>hello</span></div>
     <ul>
         <li>hello 2</li>
         <li>hello 3</li>
     </ul>
</div>

解釋:

  • re1標識<li>標簽
    • 它有多次匹配的g標志
    • 替換 function 具有三個捕獲組作為參數p1p2p3
  • 替換 function 從p2中刪除所有divspan標簽,這是<li>標簽中的內容
    • 調整re2以添加額外的標簽來過濾
    • 它還具有多次匹配的g標志

暫無
暫無

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

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