我们的一个页面上有一个 TinyMCE 脚本,允许用户将 Word 中的文本片段粘贴到其中。我们注意到,在从 Word 文档粘贴时,我们会得到一些额外的、不需要的 CSS,例如文本中预先添加的代码,看起来像
@font-face
{
font-family: "Arial";
}
@font-face
{
font-family: "Cambria Math";
}
@font-face
{
font-family: "Cambria";
}
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Arial;
}
strong { }
.MsoChpDefault
{
font-size: 10pt;
font-family: Cambria;
}
div.WordSection1
{
page: WordSection1;
}
我们目前有一个 PHP 脚本,它使用正则表达式在保存数据之前删除该数据。但是,我们希望在粘贴时删除这些数据,以便用户永远不会接触到它。
我已将以下正则表达式添加到 TinyMCE 的 onPaste 插件中
/@font(.*)\{(.*)\}/i
但是,它不会删除任何内容。如果我删除最后一个文字括号 \}
,它将删除代码的某些部分,但不会删除整个代码,因此表达式似乎位于正确的位置,但是,它似乎不是格式正确。
基本上,我正在寻找一个有效的 JavaScript 正则表达式,它将删除从 @font
到最后一个大括号 }
的所有内容。
最佳答案
Javascript RegExp 中的点选择器 (.
) 匹配除换行符之外的所有字符。不幸的是,在 Javascript 中没有 s
标志来打开点匹配换行符。相反,可以使用字符集 [\s\S]
来匹配任何空白字符(包括换行符)和任何非空白字符。因此,以下正则表达式将删除从 @font
到最后一个大括号 }
的所有内容:
yourText = yourText.replace(/@font[\s\S]*\{[\s\S]*\}/i,'');
关于JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859141/