ace editor的自定义正则表达式 identifierRegexps 问题
在Ace editor里,我想用自定义的补全器去识别点号结尾的string,比如”class.“.以下是自定义补全器:
var customCompleter = {
// custom prefix to match dot
identifierRegexps: [/[a-zA-Z_0-9\.\-\u00A2-\uFFFF]/],
getCompletions: function(editor, session, pos, prefix, callback) {
console.log("prefix",prefix);
if (prefix.length === 0) { callback(null, []); return }
let matches = produceMatch;
callback(null, matches);
}
};
// add completer
langTools.addCompleter(customCompleter);
editor.setOptions({enableLiveAutocompletion: 'customCompleter'});
其中遇到两个问题:
1.为了识别点号结尾的string,设置: identifierRegexps: [/[a-zA-Z]+.?$/], 但是这个正则表达式还是不会识别".", 打印出的prefix跟原生补全器的ID_Regex一样只是单纯匹配了string。
2.如果我按照ID_regex的写法:[/[a-zA-Z_0-9$-u00A2-uFFFF]/], 修改为:identifierRegexps: [/[a-zA-Z_0-9.-u00A2-uFFFF]/]. 会出现不识别单个点号的情况:
input: c
- prefix: c
;
input: c.
- no prefix 不打印;
input: c..
- prefix: c..
;
input: .
- prefix: .
;
input: ..
- prefix: ..
;
为了解决这个问题我尝试取消自动补全改为BasicAutocomplete, 这时却没有了这个问题。
总结一下,第一,一般的正则表达式用在identifierRegexps没有按照预想的去匹配,这里我不太懂ID_Regex的写法有什么不同。第二,为什么自动补全会出现不匹配单个句点,而basic可以。
Ace的源码也看了看,没有什么头绪,望大神解答。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论