我需要根据复制内容的位置处理代码中粘贴的内容。如果内容是从 word 复制的,那么我需要做一些功能。同样,从文本文档复制内容时必须调用另一个函数和浏览器内容的另一个函数。我们将通过剪贴板数据获取 html 内容。为了检查它是否是从 word 复制的,我使用了正则表达式/class="?Mso|style="[^ ]*\bmso-/i。但这里的问题是,虽然部分内容是从 word 中复制的,但它没有类 Mso,只有样式 mso。在某些情况下,它只有 Mso 类名而不是样式。即使条件具有 OR ,当 html 内容中存在任何 Mso 时,正则表达式也会失败。所以我需要检查 html 内容是否是从 word 中复制的,两种情况下都有一个通用的正则表达式。需要正则表达式来检查复制的 html 内容是来自文本文档还是浏览器网页。正则表达式用于检查从 word 复制的内容。RegExp= /class="?Mso|style="[^ ]*\bmso-/i从浏览器网页复制时,我得到以下 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>而从文本文档复制的文本将是没有正文标签或片段的纯 HTML。我需要从浏览器页面中删除这些 html 内容的开始和结束片段。我需要一个正则表达式来检查内容是否是从文本文档或浏览器网页中复制的。
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
您想保留两个标签之间的所有文本,<!--StartFragment-->
并且<!--EndFragment-->
.
虽然你可以使用
s = s.replace(/<!--StartFragment-->([\s\S]*?)<!--EndFragment-->/g, '$1');
查看正则表达式演示
我建议解开惰性点模式并使用更有效的模式,例如:
s = s.replace(/<!--StartFragment-->([^<]*(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*)<!--EndFragment-->/g, '$1');
非嵌套的<!--StartFragment-->
and<!--EndFragment-->
将被删除,它们之间的所有内容都将被放回结果字符串中。
第 1 组 ( $1
) 模式是[^<]*(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*
:
[^<]*
- 0 个或多个字符,而不是<
(?:<(?!!--(?:Start|End)Fragment-->)[^<]*)*
- 0 次或多次出现:<(?!!--(?:Start|End)Fragment-->)
-<
后面不跟!--
,Start
或者End
, 然后Fragment-->
[^<]*
- 0 个或多个字符,而不是<
添加回答
举报
0/150
提交
取消