【问题标题】:Regex for Matching Words within a String用于匹配字符串中的单词的正则表达式
【发布时间】:2014-04-02 14:52:13
【问题描述】:

这是我目前所拥有的,但它只匹配目标字符串的开头:

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”将自动完成“数组”中的每个元素插入“函数(值)”

编辑 1: 我正在寻找一个正则表达式来从字符串中每个单词的开头进行搜索。例如,“an”匹配“I like Andy”,但不匹配“I like candy”。

【问题讨论】:

  • 那么你想怎么搜索?

标签: javascript regex jquery-ui autocomplete


【解决方案1】:

这是我目前所拥有的,但它只匹配目标字符串的开头:

解决这个问题

试试这个:

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

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

为此:

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

既然你说,你想匹配,你必须用.+?为你的正则表达式添加前缀和后缀。喜欢

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

【讨论】:

  • 没有“^”,搜索类似于“包含”,对于一个巨大的列表来说真的很慢。查看我的编辑
  • 但是你说你不仅要搜索开头的内容吗?
  • 基本上,数组中的字符串包含多个用空格分隔的单词。用户输入一个词或部分输入该词。然后它应该匹配包含匹配该部分单词开头的单词的字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2011-12-13
  • 2014-07-09
  • 2016-12-03
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多