用于匹配字符串中单词的正则表达式

时间:2014-04-02 14:52:13

标签: javascript regex jquery-ui autocomplete

这是我到目前为止所做的,但它只匹配目标字符串的开头:

var enteredText = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");

$.ui.autocomplete.filter = function(array, term) {
    var enteredText = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");

    return $.grep(array, function(value) {
        return enteredText.test(value.label || value.value || value);
    });
};

注意:$ .ui.autocomplete.filter允许我更改jQuery UI如何使用自动完成功能搜索术语。

“term”是输入到输入框中的文本。

“$。grep”将自动完成“数组”中的每个元素插入“function(value)”

编辑1: 我正在寻找一个正则表达式从字符串中的每个单词的开头搜索。例如,“an”匹配“我喜欢Andy”而不是“我喜欢糖果”。

1 个答案:

答案 0 :(得分:2)

  

这是我到目前为止所做的,但它只匹配目标字符串的开头:

解决这个问题

试试这个:

删除^,因为您不想只在字符串的开头。

var enteredText = new RegExp($.ui.autocomplete.escapeRegex(term), "i");

为此:

  编辑1:我正在寻找正则表达式,从每个开头搜索   字符串中的单词。例如,""比赛"我喜欢Andy"但不是"我   喜欢糖果"。

既然您要匹配,则必须使用.+?为正则表达式添加前缀和后缀。像

var enteredText = new RegExp(".*"+$.ui.autocomplete.escapeRegex(term)+".*", "i");