我正在使用awesomplete autosuggest插件来显示输入的建议。 我想只从单词的开头匹配,并匹配由空格分隔的几个地方。
例:
input =“我不知道如何正确使用RegExp”。
如果我输入“kno reg”或“corr ho” - 应该匹配 但如果我键入“kno ow”或“se corr”,则不会。
到目前为止,我只能匹配单词的开头:
_.FILTER_WORDSTART = function(text, input) {
return RegExp("(?:^|\\s)" + $.regExpEscape(input.trim()), "i").test(text);
};
$.regExpEscape = function (s) {
return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\&");
};
这样可行,但我还需要它来匹配由空格分隔的几个地方。
(编辑)
以上部分解决了
现在我有:
_.FILTER_WORDSTART = function(text, input) {
return input.split(/\s+/).every(function(word) { return RegExp("(?:^|\\s)" + $.regExpEscape(word.trim()), "i").exec(text); });
};
$.regExpEscape = function (s) {
return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\&");
};
// Highlight function
_.ITEM = function (text, input) {
var html = input === '' ? text : text.replace(RegExp($.regExpEscape(input.trim()), "gi"), "<mark>$&</mark>");
return $.create("li", {
innerHTML: html,
"aria-selected": "false"
});
};
如何突出显示空格分隔的每个单词? _.FILTER_WORDSTART将始终返回true或false,即使我在正则表达式上设置“exec”而不是“test”。 但我需要突出显示功能中的实际匹配。关于我如何提出这个问题的任何帮助?