Ace编辑器 - 多字突出显示规则

时间:2013-10-19 21:59:13

标签: javascript regex syntax-highlighting highlighting ace-editor

这恐怕是一个非常挑剔的问题 - 我觉得这是不可能的。

场合

我需要一个具有某些单词和短语的highligting(一些css效果)的textarea。 以前我有这个与editarea一起工作 - 但是因为它是一个死的项目出现了越来越多的问题所以我正在尝试另一个更新的编辑器 - Ace。

问题

我现在有一个使用自定义模式突出显示单个单词集的ace,但是与正则表达式相匹配的短语已经证明超出了我(到目前为止)。

相关的模式代码 - 现状如下:

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

this.$rules = {
    "start" : [
    {
        token : keywordMapper,
        regex : "[a-zA-Z0-9_$][a-zA-Z0-9_$]*\\b"
    },{
        token : "text",
        regex : "\\s+"
    }]

我尝试匹配2个单词短语在下面(不起作用)(还尝试通过添加{2}等coppies来匹配更长的条目

regex : "[a-zA-Z0-9_$][a-zA-Z0-9_$]*(?:\\s[a-zA-Z0-9_$][a-zA-Z0-9_$]*){1}\\b"

任何人都有任何关于获得ace工作的想法 - 或任何更容易的替代实时编辑字和&短语突出显示?

1 个答案:

答案 0 :(得分:4)

传递给keywordMapper的正则表达式与空格字符不匹配。

使用

this.$rules = {
    "start" : [
    {
        token : "highlightWords",
        regex : "word1|word2|word3|phrase one|phrase number two|etc"
    }]
}