拉風(fēng)的咖菲貓
2021-08-26 16:42:31
我需要根據(jù)復(fù)制內(nèi)容的位置處理代碼中粘貼的內(nèi)容。如果內(nèi)容是從 word 復(fù)制的,那么我需要做一些功能。同樣,從文本文檔復(fù)制內(nèi)容時必須調(diào)用另一個函數(shù)和瀏覽器內(nèi)容的另一個函數(shù)。我們將通過剪貼板數(shù)據(jù)獲取 html 內(nèi)容。為了檢查它是否是從 word 復(fù)制的,我使用了正則表達(dá)式/class="?Mso|style="[^ ]*\bmso-/i。但這里的問題是,雖然部分內(nèi)容是從 word 中復(fù)制的,但它沒有類 Mso,只有樣式 mso。在某些情況下,它只有 Mso 類名而不是樣式。即使條件具有 OR ,當(dāng) html 內(nèi)容中存在任何 Mso 時,正則表達(dá)式也會失敗。所以我需要檢查 html 內(nèi)容是否是從 word 中復(fù)制的,兩種情況下都有一個通用的正則表達(dá)式。需要正則表達(dá)式來檢查復(fù)制的 html 內(nèi)容是來自文本文檔還是瀏覽器網(wǎng)頁。正則表達(dá)式用于檢查從 word 復(fù)制的內(nèi)容。RegExp= /class="?Mso|style="[^ ]*\bmso-/i從瀏覽器網(wǎng)頁復(fù)制時,我得到以下 HTML 格式。<html><body><!--StartFragment--><span style="box-sizing: border-box; color: rgb(17, 17, 17); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.25px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; font-family: "Segoe UI", sans-serif;">We have checked the sample </span><!--EndFragment--></body></html>而從文本文檔復(fù)制的文本將是沒有正文標(biāo)簽或片段的純 HTML。我需要從瀏覽器頁面中刪除這些 html 內(nèi)容的開始和結(jié)束片段。我需要一個正則表達(dá)式來檢查內(nèi)容是否是從文本文檔或?yàn)g覽器網(wǎng)頁中復(fù)制的。
1 回答

開滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個贊
您想保留兩個標(biāo)簽之間的所有文本,<!--StartFragment-->
并且<!--EndFragment-->
.
雖然你可以使用
s = s.replace(/<!--StartFragment-->([\s\S]*?)<!--EndFragment-->/g, '$1');
我建議解開惰性點(diǎn)模式并使用更有效的模式,例如:
s = s.replace(/<!--StartFragment-->([^<]*(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*)<!--EndFragment-->/g, '$1');
非嵌套的<!--StartFragment-->
and<!--EndFragment-->
將被刪除,它們之間的所有內(nèi)容都將被放回結(jié)果字符串中。
第 1 組 ( $1
) 模式是[^<]*(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*
:
[^<]*
- 0 個或多個字符,而不是<
(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*
- 0 次或多次出現(xiàn):<(?!!--(?:Start|End)Fragment-->)
-<
后面不跟!--
,Start
或者End
, 然后Fragment-->
[^<]*
- 0 個或多個字符,而不是<
添加回答
舉報
0/150
提交
取消