我似乎找不到任何人使用 RegEx 匹配在 CodeMirror 中创建覆盖的示例。一次匹配一件事的Mustaches示例似乎很简单,但在 API 中,它表示 RegEx 匹配返回匹配数组,我不知道在 mustaches 结构的上下文中如何处理它例子。
我有一个正则表达式,它可以找到我需要突出显示的所有元素:我已经测试过它并且它有效。
我应该在令牌函数之外加载数组然后匹配每个吗?或者有没有办法使用数组?
另一个问题是我想根据正则表达式中的 (biz|cms) 选项应用不同的样式 - 一个用于“biz”,另一个用于“cms”。会有其他人,但我试图保持简单。
这是我所得到的。评论显示了我的困惑。
CodeMirror.defineMode("tbs", function(config, parserConfig) {
var tbsOverlay = {
token: function(stream, state) {
tbsArray = match("^<(biz|cms).([a-zA-Z0-9.]*)(\s)?(\/)?>");
if (tbsArray != null) {
for (i = 0; i < tbsArray.length; i++) {
var result = tbsArray[i];
//Do I need to stream.match each element now to get hold of each bit of text?
//Or is there some way to identify and tag all the matches?
}
}
//Obviously this bit won't work either now - even with regex
while (stream.next() != null && !stream.match("<biz.", false)) {}
return null;
}
};
return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), tbsOverlay);
});