monaco-editor tokenizer 不支持 "ignore case" 正则表达式

monaco-editor tokenizer do not support "ignore case" regex

monaco-editor 中的 tokenizer 似乎不支持正则表达式中的 'ignore case' i 标志。下面的示例代码,

要复制,您可以将其粘贴到 playground 中,然后自己尝试 运行。

monaco.languages.register({ id: 'sample' });
monaco.languages.setMonarchTokensProvider('sample', {
    tokenizer: {
        root: [
            [/cmd1|cmd2/i, 'keyword']
        ]
    }
});

monaco.editor.create(document.getElementById('container'), {
    value: "cmd1 10\nCMD2 10",
    language: 'sample'
});

cmd1 变成蓝色,而 CMD2 没有。

这是故意的吗?有办法吗?

在选项中添加 ignoreCase:true 应该可以。

Editor Reference

monaco.languages.register({ id: 'sample' });
monaco.languages.setMonarchTokensProvider('sample', {
    ignoreCase:true,
    tokenizer: {
        root: [
            [/cmd1|cmd2/, 'keyword']
        ]
    }
});

monaco.editor.create(document.getElementById('container'), {
    value: "cmd1 10\nCMD2 10",
    language: 'sample'
});