Javascript正则表达式由一个字符分隔的多个匹配

时间:2016-09-07 20:13:05

标签: javascript regex

我正在使用awesomplete autosuggest插件来显示输入的建议。 我想只从单词的开头匹配,并匹配由空格分隔的几个地方。

例:
input =“我不知道如何正确使用RegExp”。

如果我输入“kno reg”或“corr h​​o” - 应该匹配 但如果我键入“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”。 但我需要突出显示功能中的实际匹配。关于我如何提出这个问题的任何帮助?

0 个答案:

没有答案
相关问题