jquery - 如何使用 ace 编辑器突出显示多个单词?

标签 jquery regex highlight ace-editor

我有一个文本区域表单字段。我希望 ace 编辑器能够一次性突出显示所有出现的某些预定义单词。像这样将它们传递到数组中是行不通的: editor.findAll("word1","word2","..."); 我正在考虑使用正则表达式,过滤某些单独的单词。这是我的代码:

<script type="text/javascript" src="/ace/src-min/ace.js" charset="utf-8"></script>
<script>
// Hook up ACE editor to all textareas with data-editor attribute
$(function () {
    $('textarea[data-editor]').each(function () {
        var textarea = $(this);
        var mode = textarea.data('editor');
        textarea.css('visibility', 'hidden');

        var editor = ace.edit(edit);
        editor.renderer.setShowGutter(false);
        editor.getSession().setValue(textarea.val());
        editor.getSession().setMode("ace/mode/" + mode);
        editor.getSession().setUseWrapMode(true); // adds vertical scrollbar


        var keywords = "word1|word2";
        keywords = new RegExp(keywords);

        editor.findAll(keywords,{
            //caseSensitive: false,
            //wholeWord: true,
            regExp: true
        });
    });
});
</script>

不幸的是它什么也没做。也许我缺少某种图书馆?我得到了与 codemirror ( http://codemirror.net/ ) 一起使用的正则表达式,但想尝试一下 ace-editor。 显然这在某种程度上有效:

var highlightWords = "word1|word2|word3|phrase one|phrase number two|etc";
 var keywordMapper = this.createKeywordMapper({
     "highlightWords": highlightWords
}, "identifier", true);

但坦率地说,我不知道如何将所有这些部分组合在一起并使它们发挥作用。 我基本上想将预定义单词的列表传递给 ace,以便它们突出显示。如果我没有记错的话,我需要为此设置自己的突出显示规则,然后使它们与 ace-editor 一起使用。也许有人以前做过这个或者可以给我一个简单的例子?我尝试了这个文档( https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode ),但无法理解它。我什至不确定这是否是正确的起点。

最佳答案

您可以执行以下操作:

var keywords = /word1|word2/g

在 Javascript 中,正则表达式不是用引号包围的,而是用分隔符包围的(我使用了 /),标志出现在第二个分隔符之后。

g 是全局标志,因此正则表达式将在整个编辑器中多次匹配。

您还可以通过问题中的 keywords 变量使用:

var keywords = new RegExp(keywords, 'g');

关于jquery - 如何使用 ace 编辑器突出显示多个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20075167/

相关文章:

javascript - 使用 jQuery 突出显示单词的父级?

javascript - 如何将两个位于不同 div 中的按钮添加到彼此?

java - 为什么 "hello\\s*world"与 "hello world"不匹配?

javascript - 如何通过最接近的匹配文本获取元素?

ios - 为什么类型转换有效而选择器不起作用

emacs:如何更改高光的前景色(例如,点结束的链接)?

javascript - $.post() 回调方法建议

jquery - knockout : Not working in IE7

javascript - 使用 ajax 发布时显示加载图像不起作用

javascript - 为什么这一行会导致 Javascript 崩溃?