簡體   English   中英

除了p標簽之外,從JavaScript中刪除文本中的Html?

[英]Strip Html from Text in JavaScript except p tags?

我需要用JavaScript更改RichEditor和TextEditor模式,現在我需要將Html轉換為實際仍處於Html編輯器模式的Text,所以我只需要p標簽,但其他Html可以被剝離。

正則表達式替換(全局,不區分大小寫):

</?(?:(?!p\b)[^>])*>

用空字符串。

說明:

<          # "<"
/?         # optional "/" 
(?:        # non-capture group
  (?!      #   negative look-ahead: a position not followed by...
    p\b    #     "p" and a word bounday
  )        #   end lock-ahead
  [^>]*    #   any char but ">", as often as possible
)          # end non-capture group
>          # ">"

這是將HTML正則表達式實際應用的少數情況之一。

有些人可能反對並說,在屬性值中使用文字“<”實際上並未被禁止,因此可能會破壞上述正則表達式。 他們是對的。

這種情況下,正則表達式會破壞,取代帶下划線的部分:

<p class="foo" title="unusual < title">
                              ---------

如果您的輸入可以實現這一點,那么您可能必須使用更高級的工具來完成工作 - 解析器。

這應該有所幫助

var html = '<img src=""><p>content</p><span style="color: red">content</span>';
html.replace(/<(?!\s*\/?\s*p\b)[^>]*>/gi,'')

我的正則表達式的解釋:

更換所有部件

  1. 以“<”開頭,
  2. 沒有跟着(?!
    • 任意數量的空白字符“\\ s *”
    • 可選的“/”字符
    • 和標簽名稱后跟一個單詞邊界(這里是“p \\ b”)
  3. 包含任何不等於“>”的字符 - [^>] *
  4. 並以“>”字符結尾

暫無
暫無

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

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