我希望能够使用CKEditor中的正则表达式来突出显示所有与正则表达式匹配的文本(即用一种颜色或其他方式包装跨度)。我可能会添加一个按钮来做到这一点,一个按钮来删除突出显示。我的具体用例是突出显示我的HTML模板中的所有胡子变量(可以很容易地看出哪里有胡须变量)。如何突出显示与CKeditor中的正则表达式匹配的元素?
我已经实现了一个版本,我用一个span替换了正则表达式匹配胡须,然后是捕获组。当我测试时,这似乎在一些模板上打破。
要删除突出显示,我使用了editor.removeStyle,它似乎并不适用于所有情况。
这里是什么,我实现了一个例子:
editor.addCommand('highlightMustache', {
exec: function(editor) {
editor.focus();
editor.document.$.execCommand('SelectAll', false, null);
var mustacheRegex = /{{\s?([^}]*)\s?}}/g;
var data = editor.getData().replace(mustacheRegex, '<span style="background-color: #FFFF00">{{ $1 }}</span>');
editor.setData(data);
}
});
// command to unhighlight mustache parameters
editor.addCommand('unhighlightMustache', {
exec: function(editor) {
editor.focus();
editor.document.$.execCommand('SelectAll', false, null);
var style = new CKEDITOR.style({ element:'span', styles: { 'background-color': '#FFFF00' },type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1 });
editor.removeStyle(style);
editor.getSelection().removeAllRanges();
}
});
谢谢!
我几乎有同样的问题。我需要能够在键入CKeditor期间突出显示匹配正则表达式的内容。 – Polygnome
“当我测试时,这似乎在某些模板上会中断。” - 它如何中断?你也可以在你的问题中包含一个示例模板,以便可以复制问题吗?同样,“我使用editor.removeStyle,它似乎在所有情况下都不起作用” - 您能举一个它不起作用的例子吗? –
gsastry和@Polygnome现在你最喜欢的解决方案是什么,你有没有一个例子呢?因为我有类似的需要尊重开始和结束占位符标记“{”和“}”。 – melutovich