仅在代码镜像中突出显示完整单词

时间:2018-11-27 17:40:15

标签: javascript regex codemirror

我正在尝试为codemirror编辑器的批处理文件编写一个简单的语法突出显示器。但是我在突出显示命令方面陷入困境。 我只希望突出显示完整的单词。但是在某些情况下,变量名或路径的某些部分也会被突出显示。

这是突出显示的样子:

enter image description here

我在正则表达式中使用\b(commands)\b,以便只匹配完整的单词。但这似乎不起作用。可能是Codemirror错误吗?

这是Codemirror模式的代码,用于仅突出显示命令

CodeMirror.defineSimpleMode("batch", {
    start: [
        {   //commands
            regex: /\b(?:assoc|aux|break|call|cd|chcp|chdir|choice|cls|cmdextversion|color|com1|com2|com3|com4|com|con|copy|country|ctty|date|defined|del|dir|do|dpath|else|endlocal|erase|errorlevel|exist|exit|for|ftype|goto|if|in|loadfix|loadhigh|lpt|lpt1|lpt2|lpt3|lpt4|md|mkdir|move|not|nul|path|pause|popd|prn|prompt|pushd|rd|rename|ren|rmdir|setlocal|set|shift|start|time|title|type|verify|ver|vol)\b/i,
            token: "builtin"
        }
    ]
});

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。

按照约翰·史密斯的建议,我使用\b(commands)\b而不是(?:\s|^)(commands)(?:\s|$)。 这样,仅在命令之前用空格或行开头,在命令之后用空格或行结尾突出显示命令。