我在javascript中与Ace编辑器挣扎。 我的前进功能正常:
var selectionRange = editor.getSelectionRange();
var res = editor.find(/\?\w+\b/, { backwards: false, start: selectionRange, wrap: true, caseSensitive: false, wholeWord: false, regExp: true});
当我在多行上有多个令牌时,它会在我进行多次搜索时按顺序查找它们。
?a ?b ?c // First ?a, then ?b, then ?c, then ?d
?d
但是为了向后寻找,只需向后改变为真,它只会找到每一行的第一个元素。
var selectionRange = editor.getSelectionRange();
var res = editor.find(/\?\w+\b/, { backwards: true, start: selectionRange, wrap: true, caseSensitive: false, wholeWord: false, regExp: true});
?a ?b ?c // First ?d, then ?a !! ?c and ?b are skipped ?d
找回所有实例的正确方法是什么?
答案 0 :(得分:1)
你的正则表达式错过g
标志。使用editor.find("\\?\\w+\\b", ...)
并让ace创建正则表达式或使用editor.find(/\?\w+\b/g, ...)