2

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

情况

我需要有一个文本区域,其中包含某些单词和短语的高亮(一些 css 效果)。以前我已经使用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} 等的副本来匹配更长的条目)

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

任何人有任何想法让 ace 工作 - 或任何更简单的实时编辑单词和短语突出显示的替代方案?

4

1 回答 1

4

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

利用

this.$rules = {
    "start" : [
    {
        token : "highlightWords",
        regex : "word1|word2|word3|phrase one|phrase number two|etc"
    }]
}
于 2013-10-20T06:39:00.800 回答