JavaScript 正则表达式

标签 javascript regex tinymce

我们的一个页面上有一个 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,'');

See working example →

关于JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859141/

相关文章:

javascript - 使用 jQuery 在文本区域内匹配和突出显示标签/单词(更改颜色和字体粗细)

html - 下划线格式问题

javascript切换以显示和隐藏特定标签

javascript - 下拉 JQuery 在没有主页的情况下无法工作

javascript - addEventListener 类型 'click' 实际上表现得像 'load'

javascript - 如何从 TinyMCE 编辑器中提取 HTML 内容

html - 在 TinyMCE 中设置数据 URI

java - 我希望 Java Pattern.compile 识别正整数或负整数或小数

regex - 空间格式化数据到csv

r - 将项目符号点和文本拆分为 R 中的单独行